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.
root@192.168.120.135'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 root@192.168.120.120
root@192.168.120.120'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
root@192.168.120.120'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.
root@192.168.120.135'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 root@192.168.120.120 -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
root@192.168.120.120's password:
root@192.168.120.135'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命令:

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

[root@lianxi ~]# ls /root/ && ls /etc/selinux/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txt
config semanage.conf targeted
[root@shiyan ~]# ssh -l root 192.168.120.120 "ls /root/ && ls /etc/selinux"
root@192.168.120.120'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.
... ...
root@192.168.120.135'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]] [user@]machine
選項
-i:指定公鑰文件
實例
1、把本地的ssh公鑰文件安裝到遠程主機對應的賬戶下:
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

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地址或者主機名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM