Linux下SSH命令使用方法詳解

xypincle發表於2017-05-06

1、檢視SSH客戶端版本

有的時候需要確認一下SSH客戶端及其相應的版本號。使用ssh -V命令可以得到版本號。需要注意的是,Linux一般自帶的是OpenSSH: 下面的例子即表明該系統正在使用OpenSSH:

$ ssh -V 
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

下面的例子表明該系統正在使用SSH2:

$ ssh -V 
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

2、用SSH登入到遠端主機

當你第一次使用ssh登入遠端主機時,會出現沒有找到主機金鑰的提示資訊。輸入"yes"後,系統會將遠端主機的金鑰加入到你的主目錄下的 .ssh/hostkeys下,這樣你就可以繼續操作了。示例如下:

1
2
3
4
5
6
7
8
localhost$ ssh -l jsmith remotehost.example.com
Host key not found from database.
Key fingerprint:
xabie-dezbc-manud-bartd-satsy-limit-nexiu-jambl-title-jarde-tuxum
You can get a public key‘s fingerprint by running % ssh-keygen -F publickey.pub on the keyfile.
Are you sure you want to continue connecting (yes/no)? Yes
Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remotehost.example.com.pub host key for remotehost.example.com,
accepted by jsmith Mon May 26 2008 16:06:50 -0700 jsmith@remotehost.example.com password: remotehost.example.com$

因為遠端主機的金鑰已經加入到ssh客戶端的已知主機列表中,當你第二次登陸遠端主機時,只需要你輸入遠端主機的登入密碼即可。

1
2
3
localhost$ ssh -l jsmith remotehost.example.com
jsmith@remotehost.example.com password:
remotehost.example.com$

由於各種原因,可能在你第一次登陸遠端主機後,該主機的金鑰發生改變,你將會看到一些警告資訊。出現這種情況,可能有兩個原因:

o 系統管理員在遠端主機上升級或者重新安裝了SSH伺服器 
o 有人在進行一些惡意行為,等等。

在你輸入“yes”之前呢,最佳的選擇或許是聯絡你的系統管理員來分析為什麼會出現主機驗證碼改變的資訊,核對主機驗證碼是否正確。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
localhost$ ssh -l jsmith remotehost.example.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: HOST IDENTIFICATION HAS CHANGED!
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the- middle attack)!
It is also possible that the host key has just been changed.
Please contact your system administrator.
Add correct host key to ―/home/jsmith/.ssh2/hostkeys/key_22_remotehost.example.com.pub‖ to get rid of this message.
Received server key's fingerprint:
xabie-dezbc-manud-bartd-satsy-limit-nexiu-jambl-title-arde-tuxum
You can get a public key's fingerprint by running % ssh-keygen -F publickey.pub on the keyfile.
Agent forwarding is disabled to avoid attacks by corrupted servers.
Are you sure you want to continue connecting (yes/no)? yes
Do you want to change the host key on disk (yes/no)? yes
Agent forwarding re-enabled.
Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remotehost.example.com.pub host key for remotehost.example.com,
accepted by jsmith Mon May 26 2008 16:17:31 -0700 jsmith @remotehost.example.com's password: remotehost$

3、除錯SSH客戶端會話

當ssh連線出現問題時,我們需要透過檢視除錯資訊來定位這些錯誤。一般來講使用v選項(注意:是小寫的v),即可檢視除錯資訊。

沒有SSH客戶端除錯資訊的例子:

1
2
localhost$ ssh -l jsmith remotehost.example.com
warning: Connecting to remotehost.example.com failed: No address associated to the name

包含ssh除錯資訊的例子:

1
2
3
4
5
6
7
8
9
10
locaclhost$ ssh -v -l jsmith remotehost.example.com
debug: SshConfig/sshconfig.c:2838/ssh2_parse_config_ext:
Metaconfig parsing stopped at line 3.
debug: SshConfig/sshconfig.c:637/ssh_config_set_param_verbose:
Setting variable 嘠攀爀戀漀猀攀Mode' to FALSE'.
debug: SshConfig/sshconfig.c:3130/ssh_config_read_file_ext: Read 17 params from config file.
debug: Ssh2/ssh2.c:1707/main: User config file not found, using defaults. (Looked for /home/jsmith/.ssh2/ssh2_config')
debug: Connecting to remotehost.example.com, port 22… (SOCKS not used)
warning: Connecting to remotehost.example.com failed: No address associated to the name
[注:很多命令中,v選項對應的英文是 verbose,也就是詳細的資訊的意思。]

當你使用ssh從本機登入到遠端主機時,你可能希望切換到本地做一些操作,然後再重新回到遠端主機。這個時候,你不需要中斷ssh連線,只需要按照第4點的步驟操作即可:

4、用SSH退出符切換SSH會話

這個技巧非常實用。尤其是遠端登陸到一臺主機A,然後從A登陸到B,如果希望在A上做一些操作,還得再開一個終端,很是麻煩。

當你使用ssh從本機登入到遠端主機時,你可能希望切換到本地做一些操作,然後再重新回到遠端主機。這個時候,你不需要中斷ssh連線,只需要按照如下步驟操作即可:

當你已經登入到了遠端主機時,你可能想要回到本地主機進行一些操作,然後又繼續回到遠端主機。在這種情況下,沒有必要斷開遠端主機的會話,你可以用下面的辦法來完成:

1.登入遠端主機:

localhost$ ssh -l jsmith remotehost

2.已連線遠端主機:

remotehost$

3.要臨時回到本地主機,輸入退出符號:“~”與“Control-Z”組合。

當你輸入“~”你不會立即在螢幕上看到,當你按下<Control-Z>並且按回車之後才一起顯示。如下,在遠端主機中以此輸入“~<Control-Z>”

remotehost$ ~^Z 
[1]+ Stopped ssh -l jsmith remotehost 
localhost$

4.現在你已經退回到了本地主機,ssh遠端客戶端會話就在UNIX後臺中執行,你可以向下面那樣檢視它:

localhost$ jobs 
[1]+ Stopped ssh -l jsmith remotehost

5. 你可以將後臺執行的ssh會話程式切換到前臺,重新回到遠端主機,而無需輸入密碼

localhost$ fg %1 
ssh -l jsmith remotehost 
remotehost$

5、用SSH退出字元會話,顯示資訊

要想取得一些關於當前會話有用的資訊,可以按以下方式完成。不過這隻能在SSH 2 客戶端上使用。

登入到遠端伺服器

localhost$ ssh -l jsmith remotehost

如下所示,在遠端伺服器上,輸入ssh退出字元~並輸入s。這樣會顯示出很多有關當前ssh連線的有用資訊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
remotehost$ [注:當你在命令列上輸入~s時,它是不可見的.]
remote host: remotehost
local host: localhost
remote version: SSH-1.99-OpenSSH_3.9p1
local version: SSH-2.0-3.2.9.1 SSH Secure Shell (non-commercial)
compressed bytes in: 1506
uncompressed bytes in: 1622
compressed bytes out: 4997
uncompressed bytes out: 5118
packets in: 15
packets out: 24
rekeys: 0
Algorithms:
Chosen key exchange algorithm: diffie-hellman-group1-sha1
Chosen host key algorithm: ssh-dss
Common host key algorithms: ssh-dss,ssh-rsa
Algorithms client to server:
Cipher: aes128-cbc
MAC: hmac-sha1
Compression: zlib
Algorithms server to client:
Cipher: aes128-cbc MAC: hmac-sha1
Compression: zlib
localhost$

以上就是Linux下SSH的詳細使用方法,希望能夠對你有所幫助。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2138565/,如需轉載,請註明出處,否則將追究法律責任。

相關文章