本文主要介紹一下幾個要點內容:
1 ssh客戶端的DEBUG調試
2 ssh的轉義符用法(比如切換ssh會話)
3 ssh的信任登陸(即登陸不需要手動輸入密碼)
1 ssh客戶端的DEBUG調試
有時候我們有必要對於一些ssh連接故障通過調試信息確定問題和解決,選項-v即實現此功能。
例如沒有使用debug信息:
[root@server ~]# ssh -l root 192.168.9.104 ssh: connect to host 192.168.9.104 port 22: Connection refused |
包含debug信息:
[root@server ~]# ssh -v -l root 192.168.9.104 OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to 192.168.9.104 [192.168.9.104] port 22. debug1: connect to address 192.168.9.104 port 22: Connection refused ssh: connect to host 192.168.9.104 port 22: Connection refused |
這個信息說明,配置文件里面已經修改了默認的端口號
2 ssh的轉義符用法
1 切換SSH會話:當你登錄到本地主機使用SSH從遠程主機,你可能要回來執行一些活動,然后再返回到遠程主機了。在這種情況下,不需要斷開SSH會話到遠程主機。 而是按照下列步驟:
1 遠程登錄到某台機器:server#ssh -l 用戶名 主機名(或者IP)
2 現在已經在遠程機器上:client#
3 回到localhost:先輸入轉義符“~”,然后輸入ctrl+z,回車:
[root@client ~]# ~^Z [suspend ssh] |
[1]+ Stopped ssh -l root 192.168.9.104 -p 9922 [root@server ~]# 4 現在又回到了本地主機,遠程主機的SSH客戶端會話作為后台運行的進程工作,檢查運行如下所示:
[root@server ~]# jobs [1]+ Stopped ssh -l root 192.168.9.104 -p 9922 |
5 現在回到遠程主機:
[root@server ~]# fg %1 ssh -l root 192.168.9.104 -p 9922 [root@client ~]# |
2 ssh信任登陸:
在遠程登陸主機的事情,都會要求你輸入密碼,這樣很麻煩,尤其是在密碼復雜不好記憶的時候。所以可以設置ssh信任,這樣可以直接登陸而不需要輸入賬號密碼信息。
實驗要求:
建立SSH信任 將server主機做為客戶端(發起SSH請求) 將client主機作為服務器端(接收ssh請求)
1.server主機生成公,私鑰證書
[root@server ~]# ssh-keygen -t dsa #生成dsa算法的證書,rsa算法在-t后 加 rsa Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): #這一步詢問私鑰和公鑰存放的地址,一般我們要將它放在這個默認的目錄下,因此直接敲回車 Enter passphrase (empty for no passphrase): #-這一步詢問這個信任有關系是否需要密碼,我們本來就是為了簡化輸入密碼這個步驟的,當然這里就不需要密碼了,因此直接回車 Enter same passphrase again: #這一步是密碼確認,直接回車 Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: 2e:f6:1b:00:23:9e:27:3f:19:48:83:89:e9:ee:d4:5e root@server.dongwm.com |
這步之后,生成2個文件:id_dsa和id_dsa.pub,其中id_dsa文件是私鑰文件,而id_dsa.pub文件是公鑰文件,接下來的步驟中我們就需要將id_dsa.pub里的內容添加到client的信任關系中
2. 在client機器上的用戶XXX帳號下(我這里是root)的~/.ssh/authorized_keys或者~/.ssh/authorized_keys2中添加一行文件,即 id_dsa.pub里的內容,注意這個內容是一行,不要因為拷貝而帶了額外的回車符。其中authorized_keys2表示采用ssh2登陸。
[root@server ~]# scp -P 9922 ~/.ssh/id_dsa.pub root@client.okooo.com:/root/.ssh/authorized_keys |
注:引入“ssh-copy-id ”這個命令
ssh-copy-id 其實是一個自帶的腳本,因為authorized_keys不容易記住,可以用如下格式:
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server效果和上面的一樣。
當不使用默認的22端口,使用這樣的命令:
#ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 端口號碼 user@server”
至此我們已經建立了機器server上root到機器client上用戶root之間單向信任關系,即可以直接讓機器server上的root直接登陸機器client上用戶root,但是不能反過來操作,也不能用戶其他用戶。
具體的原因實際上是基於PKI的非對稱式加密的,在id_dsa是私鑰文件,每次登陸的時候由它來生成一個簽名文件,將這個簽名文件發送給服務器client,服務器client從它的authorized_keys文件里找到登陸機器的公鑰,利用這個公鑰來驗證簽名是否合法,如果合法則登陸。
3.修改.ssh目錄以及authorized_keys文件的可訪問性
.ssh文件的訪問性修改為700就可以了,authorized_keys要644
4.連接信息在/var/log/secure中