1. 程式人生 > >ssh相關命令

ssh相關命令

ssh命令是openssh套件中的客戶端連線工具,可以給予ssh加密協議實現安全的遠端登入伺服器。 
語法
ssh(選項)(引數)
選項 
-1:強制使用ssh協議版本1; -2:強制使用ssh協議版本2; 
-4:強制使用IPv4地址; -6:強制使用IPv6地址;
-p:指定遠端伺服器上的埠; -b:使用本機指定地址作為對應連線的源ip地址; 
-C:請求壓縮所有資料 -f:後臺執行ssh指令;
-l:指定連線遠端伺服器登入使用者名稱; -g:允許遠端主機連線主機的轉發埠;
-F:指定ssh指令的配置檔案; -i:指定身份檔案; 
-N:不執行遠端指令; -o:指定配置選項; 
-q:靜默模式; -X:開啟X11轉發功能; 
-x:關閉X11轉發功能; -y:開啟信任X11轉發功能。 
-A:開啟認證代理連線轉發功能; -a:關閉認證代理連線轉發功能;

引數 
遠端主機:指定要連線的遠端ssh伺服器; 
指令:要在遠端ssh伺服器上執行的指令。

ssh使用
1、檢視SSH客戶端版本
有的時候需要確認一下SSH客戶端及其相應的版本號。使用ssh -V命令可以得到版本號。需要注意的是,Linux一般自帶的是OpenSSH: 下面的例子即表明該系統正在使用OpenSSH:
# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

2、連線到遠端主機:
# hostname
lianxi
# ssh 192.168.120.135
The authenticity of host '192.168.120.135 (192.168.120.135)' can't be established.
ECDSA key fingerprint is a1:54:24:18:77:01:db:c7:8c:ac:de:8f:c4:81:01:7a.
Are you sure you want to continue connecting (yes/no)? yes
第一次連線目標主機時,ssh 會讓你確認目標主機的真實性。如果你回答的是 NO,SSH 將不會繼續連線,只有回答 Yes才會繼續。
Warning: Permanently added '192.168.120.135' (ECDSA) to the list of known hosts.

[email protected]'s password: 
Last failed login: Mon Apr 10 13:54:09 CST 2017 from :0 on :0
There was 1 failed login attempt since the last successful login.
Last login: Mon Apr 10 13:08:44 2017
# hostname
nisserver
# exit
登出
Connection to 192.168.120.135 closed.

# ssh [email protected]
[email protected]

's password: 
Last login: Tue Apr 11 14:00:20 2017 from 192.168.120.120
# hostname
lianxi
# exit
登出
Connection to 192.168.120.120 closed.
# hostname
shiyan

# hostname
shiyan
# ssh 192.168.120.120 -l root
[email protected]'s password: 
Last login: Tue Apr 11 14:02:34 2017 from 192.168.120.114
# hostname
lianxi

說明:以上兩種方式都可以遠端登入到遠端主機,server代表遠端主機,name為登入遠端主機的使用者名稱。
# hostname
lianxi
# ssh 192.168.120.135
The authenticity of host '192.168.120.135 (192.168.120.135)' can't be established.
ECDSA key fingerprint is a1:54:24:18:77:01:db:c7:8c:ac:de:8f:c4:81:01:7a.
Are you sure you want to continue connecting (yes/no)? yes
第一次連線目標主機時,ssh 會讓你確認目標主機的真實性。如果你回答的是 NO,SSH 將不會繼續連線,只有回答 Yes才會繼續。
Warning: Permanently added '192.168.120.135' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Last failed login: Mon Apr 10 13:54:09 CST 2017 from :0 on :0
There was 1 failed login attempt since the last successful login.
Last login: Mon Apr 10 13:08:44 2017
# hostname
nisserver
# exit
登出
Connection to 192.168.120.135 closed.

3、連線到遠端主機指定的埠:
# ssh [email protected] -p 6222
ssh 192.168.120.120 -l root -p 6222
說明:p 引數指定埠號,通常在路由裡做埠對映時,我們不會把22埠直接映射出去,而是轉換成其他埠號,這時就需要使用-p埠號命令格式。
要改變埠號,我們需要修改 /etc/ssh/ssh_config 檔案,找到此行:
Port 22
把它換成其他的埠號,比如上面示例的 6222 埠,然後重啟 SSH 服務。

4、通過遠端主機1跳到遠端主機2:
# ssh -t 192.168.120.120 ssh 192.168.120.135
[email protected]'s password: 
[email protected]'s password: 
Last login: Tue Apr 11 14:16:45 2017 from 192.168.120.120
# hostname
nisserver
# exit
登出
Connection to 192.168.120.135 closed.
Connection to 192.168.120.120 closed.
# hostname
shiyan
說明:當遠端主機remoteserver2無法直接到達時,可以使用-t引數,然後由remoteserver1跳轉到remoteserver2。在此過程中要先輸入remoteserver1的密碼,然後再輸入remoteserver2的密碼,然後就可以操作remoteserver2了。

5、通過SSH執行遠端shell命令:

[[email protected] ~]# ls /root/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txt
[[email protected] ~]# ssh -l root 192.168.120.120 ls /root/
[email protected]'s password: 
anaconda-ks.cfg
RPM-GPG-KEY.art.txt
RPM-GPG-KEY.atomicorp.txt

[[email protected] ~]# ls /root/ && ls /etc/selinux/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txt
config semanage.conf targeted
[[email protected] ~]# ssh -l root 192.168.120.120 "ls /root/ && ls /etc/selinux" 
[email protected]'s password: 
anaconda-ks.cfg
RPM-GPG-KEY.art.txt
RPM-GPG-KEY.atomicorp.txt
config
semanage.conf
targeted
說明:連線到遠端主機,並執行遠端主機的command命令

對所有資料請求壓縮
有了這個選項,所有通過 SSH 傳送或接收的資料將會被壓縮,並且任然是加密的。要使用 SSH 的壓縮功能,使用 -C 選項。
# ssh -C 192.168.120.135
如果你的連網速度很慢的話,使用的是像 LAN 或其它更高階網路的話,壓縮反而會降低你的傳輸速度。可以使用 -o 選項加上壓縮級別引數來控制壓縮的級別,但這個選項僅僅只在 SSH-1 下起作用。


繫結源地址
如果你的客戶端有多於兩個以上的 IP 地址,你就不可能分得清楚在使用哪一個 IP 連線到 SSH 伺服器。
我們可以使用 -b 選項來指定一個IP 地址。這個 IP 將會被使用做建立連線的源地址。
# ssh -b 192.168.0.200 -l leni 192.168.0.103

使用其他配置檔案
要使用指定的配置檔案,可以使用 -F 選項。
# ssh -F /home/pungki/my_ssh_config 192.168.0.101

開啟除錯模式
因為某些原因,我們想要追蹤除錯我們建立的 SSH 連線情況。SSH 提供的 -v 選項引數正是為此而設的。
# ssh -v 192.168.120.135
OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Connecting to 192.168.120.135 [192.168.120.135] port 22.
debug1: Connection established.
... ...
[email protected]'s password:

ssh-keygen命令用於為“ssh”生成、管理和轉換認證金鑰,它支援RSA和DSA兩種認證金鑰。 
語法 
ssh-keygen(選項) 
選項 
-b:指定金鑰長度; -e:讀取openssh的私鑰或者公鑰檔案; 
-C:添加註釋; -f:指定用來儲存金鑰的檔名; 
-l:顯示公鑰檔案的指紋資料; -i:讀取未加密的ssh-v2相容的私鑰/公鑰檔案,然後在標準輸出裝置上顯示openssh相容的私鑰/公鑰; 
-N:提供一個新密語; -P:提供(舊)密語; 
-q:靜默模式; -t:指定要建立的金鑰型別。

# ssh-keygen -t rsa

ssh-copy-id命令
可以把本地主機的公鑰複製到遠端主機的authorized_keys檔案上,ssh-copy-id命令也會給遠端主機的使用者主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設定合適的許可權。 語法 
ssh-copy-id [-i [identity_file]] [[email protected]]machine 
選項 
-i:指定公鑰檔案 
例項 
1、把本地的ssh公鑰檔案安裝到遠端主機對應的賬戶下: 
ssh-copy-id [email protected] 
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh-add命令是把專用金鑰新增到ssh-agent的快取記憶體中。該命令位置在/usr/bin/ssh-add。 
語法 
ssh-add [-cDdLlXx] [-t life] [file ...] 
ssh-add -s pkcs11 
ssh-add -e pkcs11 
選項 
-D:刪除ssh-agent中的所有金鑰. -d:從ssh-agent中的刪除金鑰 
-e pkcs11:刪除PKCS#11共享庫pkcs1提供的鑰匙。 -s pkcs11:新增PKCS#11共享庫pkcs1提供的鑰匙。 
-L:顯示ssh-agent中的公鑰 -l:顯示ssh-agent中的金鑰 
-t life:對載入的金鑰設定超時時間,超時ssh-agent將自動解除安裝金鑰 -X:對ssh-agent進行解鎖 
-x:對ssh-agent進行加鎖

例項 
1、把專用金鑰新增到 ssh-agent 的快取記憶體中: 
ssh-add ~/.ssh/id_dsa 
2、從ssh-agent中刪除金鑰: 
ssh-add -d ~/.ssh/id_xxx.pub 
3、檢視ssh-agent中的金鑰: 
ssh-add -l

sftp-server命令
是一個“sftp”協議的伺服器端程式,它使用加密的方式進行檔案傳輸。 
sftp-server - SFTP 伺服器子系統
語法
sftp-server [-f log_facility] [-l log_level]
描述
sftp-server 是一個 SFTP 協議的服務端程式,它要求客戶端從 stdin 發起請求,並將應答傳送到 stdout 。
一般不直接呼叫 sftp-server ,而是通過sshd配置檔案中的 Subsystem 指令呼叫。
sftp-server 的命令列選項應當在 sshd 配置檔案中的 Subsystem 指令中設定。

ssh-agent命令
是一種控制用來儲存公鑰身份驗證所使用的私鑰的程式。ssh-agent在X會話或登入會話之初啟動,所有其他視窗或程式則以客戶端程式的身份啟動並加入到ssh-agent程式中。通過使用環境變數,可定位代理並在登入到其他使用ssh機器上時使用代理自動進行身份驗證。 
其實ssh-agent就是一個金鑰管理器,執行ssh-agent以後,使用ssh-add將私鑰交給ssh-agent保管,其他程式需要身份驗證的時候可以將驗證申請交給ssh-agent來完成整個認證過程。
語法 
ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg ...]] ssh-agent [-c | -s] -k 
選項 
-a bind_address:bind the agent to the UNIX-domain socket bind_address. 
-c:生成C-shell風格的命令輸出。 
-d:除錯模式。 
-k:把ssh-agent程序殺掉。 
-s:生成Bourne shell 風格的命令輸出。 
-t life:設定預設值新增到代理人的身份最大壽命。 
例項: 
執行ssh-agent,它會打印出來它使用的環境和變數。
# ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-SeBuaIs1LFwc/agent.11523; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11524; export SSH_AGENT_PID;
echo Agent pid 11524;

sshd命令
是openssh軟體套件中的伺服器守護程序。 
語法 
sshd(選項) 
選項 
-4:強制使用IPv4地址; -6:強制使用IPv6地址; 
-D:以後臺守護程序方式執行伺服器; -d:除錯模式; 
-f:指定伺服器的配置檔案; -e:將錯誤傳送到標準錯誤裝置,而不是將其傳送到系統日誌; 
-h:指定讀取主機key檔案; -g:指定客戶端登入時的過期時間,如果在此期限內,使用者沒有正確認證,則伺服器斷開次客戶端的連線; 
-i:ssh以inetd方式執行; -o:指定ssh的配置選項; 
-p:靜默模式,沒有任何資訊寫入日誌; -t:測試模式。


ssh-keyscan命令
是一個收集大量主機公鑰的使用工具。 
語法 
ssh-keyscan(選項)(引數) 
選項
-4:強制使用IPv4地址; 
-6:強制使用IPv6地址; 
-f:從指定檔案中讀取“地址列表/名字列表”; 
-p:指定連線遠端主機的埠; 
-T:指定連線嘗試的超時時間; 
-t:指定要建立的金鑰型別; 
-v:資訊模式,列印除錯資訊。 
引數 
主機列表:指定要收集公鑰的主機列表。

sftp命令
是一款互動式的檔案傳輸程式,命令的執行和使用方式與ftp命令相似,但是,sftp命令對傳輸的所有資訊使用ssh加密,它還支援公鑰認證和壓縮等功能。 
語法 
sftp(選項)(引數) 
選項 
-B:指定傳輸檔案時緩衝區的大小; 
-l:使用ssh協議版本1; 
-b:指定批處理檔案; 
-C:使用壓縮; 
-o:指定ssh選項; 
-F:指定ssh配置檔案; 
-R:指定一次可以容忍多少請求數; 
-v:升高日誌等級。 
引數 
目標主機:指定sftp伺服器ip地址或者主機名。