首頁 >運維 >linux運維 >linux ssh使用的方法有哪些

linux ssh使用的方法有哪些

王林
王林轉載
2023-05-22 23:58:131325瀏覽

openssh軟體包包含以下命令:

sshd ―― ssh服務端程式
sftp-server ―― sftp服務端程式(類似ftp但提供資料加密的一種協定)
scp ―― 非互動式sftp-server的客戶端,用來上傳/下載檔案
sftp ―― 互動式sftp-server客戶端,用法和ftp指令一樣。
slogin ―― ssh的別名
ssh ―― ssh協定的客戶端程序,用來登錄遠端系統或遠端執行命令
ssh-add ――    ssh代理相關程序,用來向ssh代理程式新增dsa key
ssh-agent ――    ssh代理程式
ssh-keyscan ―― ssh public key 產生器

ssh最常用的使用方式是取代telnet進行遠端登陸。有別於telnet的密碼登陸,ssh同時支援publickey、keybord interactive、gssapi等多種登錄方式,不像telnet只有輸入系統密碼一種途徑。目前最常用的登陸方式還是傳統的password方式和publickey方式登陸。以下以redhat as4為例,舉例說明這兩種登陸方式的用法。

[root@mail ~]# ssh 172.18.6.227
the authenticity of host '172.18.6.227 (172.18.6.227)' can't be established.
rsa key finger print#rsa key finger 4380is 4380is 4380is 4380is 4380is 4380is 4380is 4380is 4380is 4380is。 :f2:e1:9b:b6:6e:c0:e2:dd:57:8f:ed:89:b3:81.
are you sure you want to continue connecting (yes/no)? yes
# warning: permanently added '172.18.6.227′ (rsa) to the list of known hosts.
root@172.18.6.227's password:
last login: thu jul 12 18:47:47 2007 from 12007183.
[root@qmail ~]

#第一次登陸後,ssh就會把登陸的ssh指紋存放在用戶home目錄的.ssh目錄的know_hosts檔案中,如果遠端系統重裝過系統,ssh指紋已經改變,你需要把.ssh 目錄下的know_hosts中的相應指紋刪除,再登陸回答yes,方可登陸。請注意.ssh目錄是開頭是”.」的隱藏目錄,需要ls –a參數才能看到。而且這個目錄的權限必須是700,且使用者的home目錄也不能給其他使用者寫權限,否則ssh伺服器會拒絕登陸。如果發生不能登陸的問題,請察看伺服器上的日誌檔案/var/log/secure。通常很快就能找到不能登陸的原因。

ssh遠端執行指令:

[root@mail ~]# ssh 172.18.6.227 ls -l /
root@172.18.6.227's password:
total 1244
drwxr-xr-x    2 root root    4096 jun 26 04:02 bin
drwxr-x      4 root 2 root root    4096 jan 25 11:26 command
drwxr-xr-x   15 root root    4096 jun 12 20:09 data
drwxr-x dev
drwxr- xr-x   87 root root   12288 jul 11​​ 04:02 etc
drwxr-xr-x   20 root root    4096 apr 10 10:54 root root    4096 apr 10 10:54 root 3  2004 initrd

輸入正確的密碼後,ssh會連結遠端伺服器的sshd伺服器程序,然後執行遠端伺服器上的

ls –l /命令,並把輸入結果傳到本機伺服器。相當於你先登陸到遠端伺服器,然後實施指令ls –l /,最後再登出伺服器。需要提醒的是,如果你需要登陸伺服器並執行不只一個指令,必須要把指令用單引號或雙引號引起來:


ssh 172.18.6.227 “cd /root && ls “

ssh的遠端實施命令的功能是用來取代原始的r系列命令的,在ssh出現之前系統管理員們不得不用rexec, rsh等不安全的遠端執行命令工具來完成同樣的操作。這個功能在管理大批機器的時候是非常有用的,例如我要重啟10.0.0.0/24網段內所有的伺服器,只要輸入一條指令:

for i in $(seq 1 254) ; do  ssh 10.0.0.${i} reboot ; done

就可以完成重啟所有伺服器的操作,也許你會說,這要雖然不需要再登陸每一台伺服器了,但是還是要每次輸入密碼,多麻煩。別急,下面要講的用ssh public key方式登陸就是要解決問題。

採用public key登入:

openssh的ssh-keygen指令用來產生這樣的私鑰和公鑰。

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
generating public/private dsa key pair.
#提示正在生成,如果選擇4096長度,可能需要較長時間
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.
#公鑰和私鑰提示公鑰和私鑰已經存放在/root/.ssh/目錄下
the key fingerprint is:
71:e5:cb:15:d3:8c:05:ed:05:84:85:32:ce:b1: 31:ce gucuiwen@myserver.com
#提示key的指紋

說明:
-b 1024 採用長度為1024位元組的公鑰/私鑰對,最長4096字節,一般1024或2048就可以了,太長的話加密解密需要的時間也長。
-t dsa  採用dsa加密方式的公鑰/私鑰對,除了dsa還有rsa方式,rsa方式最短不能小於768位元組長度。
-c gucuiwen@myserver.com 對這個公鑰/私鑰對的一個註解和說明,一般用所有人的郵件代替。可以省略不寫,更多其他參數請man ssh-keygen。

[root@mail ~]# ls -l /root/.ssh
total 16
-rw——-  1 root root 668 jul 12 20:07 id_dsa
-rw- r–r–  1 root root 611 jul 12 20:07 id_dsa.pub
-rw-r–r–  1 root root 222 jul 12 19:37 known_hosts

所產生的公鑰檔案所產生的公鑰檔案在使用者home目錄的.ssh目錄下,其中id_dsa.pub是公鑰,把產生的公鑰上傳到需要登陸的伺服器的對應使用者目錄的home目錄的.ssh目錄下,再一次強調使用者自己的目錄( home目錄)必須不能有其他人可寫的權限,.ssh目錄的權限必須是700,即除了使用者自己,其他人沒有任何讀寫察看該目錄的權限,否則ssh伺服器會拒絕登陸。 ssh預設的公鑰檔案是使用者home目錄下的.ssh目錄下的authorized_keys文件,因此需要把產生的公鑰以這個檔案名稱放到伺服器的/root/.ssh/目錄下,這個檔案中可以存放多個客戶端的公鑰文件,就好比一個大門上可以上很多鎖,可以有不同的鑰匙來嘗試開鎖,只要有一個鎖被打開了,門就可以打開了。放到伺服器上應該是這樣子的:

私鑰必須是600權限,否則ssh伺服器會拒絕使用者登陸。

大致上就是這個樣子了。現把/etc/ssh/ssh_config 和 /etc/ssh/sshd_config的設定說下。

/etc/ssh/ssh_config:


host *
選項「host」只對能夠匹配後面字串的電腦有效。 “*”表示所有的計算機。

forwardagent no
「forwardagent」設定連線是否經過驗證代理程式(如果存在)轉送至遠端電腦。

forwardx11 no
「forwardx11」設定x11連線是否會自動重定向到安全的通道和顯示集(display set)。

rhostsauthentication no
「rhostsauthentication」設定是否使用基於rhosts的安全驗證。

rhostsrsaauthentication no
“rhostsrsaauthentication”設定是否使用使用rsa演算法的基於rhosts的安全驗證。

rsaauthentication yes
「rsaauthentication」設定是否使用rsa演算法進行安全驗證。

passwordauthentication yes
「passwordauthentication」設定是否使用口令驗證。

fallbacktorsh no
「fallbacktorsh」設定如果用ssh連線出現錯誤是否自動使用rsh。

usersh no
「usersh」設定是否在這台電腦上使用「rlogin/rsh」。

batchmode no
“batchmode”如果設為“yes”,passphrase/password(互動式輸入口令)的提示將被禁止。當不能互動式輸入口令的時候,這個選項對腳本檔案和批次任務十分有用。

checkhostip yes
「checkhostip」設定ssh是否查看連接到伺服器的主機的ip位址以防止dns欺騙。建議設定為“yes”。

stricthostkeychecking no
“stricthostkeychecking”如果設定成“yes”,ssh就不會自動把電腦的密匙加入“$home/.ssh/known_hosts”文件,並且一旦電腦的密匙發生了變化,就拒絕連線。

identityfile ~/.ssh/identity
「identityfile」設定從哪個檔案讀取使用者的rsa安全驗證識別碼。

port 22
「port」設定連接到遠端主機的連接埠。

cipher blowfish
「cipher」設定加密用的密碼。

escapechar ~
“escapechar”設定escape字元。

/etc/ssh/sshd_config:


port 22
「port」設定sshd監聽的連接埠號碼。

listenaddress 192.168.1.1
「listenaddress」設定sshd伺服器綁定的ip位址。

hostkey /etc/ssh/ssh_host_key

「hostkey」設定包含電腦私人密匙的檔案。

serverkeybits 1024
「serverkeybits」定義伺服器密匙的位元數。

logingracetime 600
「logingracetime」設定如果使用者無法成功登錄,則在切斷連線之前伺服器需要等待的時間(以秒為單位)。

keyregenerationinterval 3600
「keyregenerationinterval」設定在多少秒之後會自動重新產生伺服器的密匙(如果使用密匙)。重新產生密匙是為了防止用盜用的密匙解密被截獲的資訊。

permitrootlogin no
「permitrootlogin」設定root能不能用ssh登入。這個選項一定不要設成「yes」。

ignorerhosts yes
「ignorerhosts」設定驗證的時候是否使用「rhosts」和「shosts」檔案。

ignoreuserknownhosts yes
「ignoreuserknownhosts」設定ssh daemon是否在進行rhostsrsaauthentication安全驗證的時候忽略使用者的「$home/.ssh/known_hosts」

strictmodes yestrices##「stricesmodes 」設定ssh在接收登入請求之前是否檢查用戶家目錄和rhosts檔案的權限和所有權。這通常是必要的,因為新手經常會把自己的目錄和檔案設為任何人都有寫入權限。

x11forwarding no

「x11forwarding」設定是否允許x11轉送。

printmotd yes

「printmotd」設定sshd是否在使用者登入的時候顯示「/etc/motd」中的資訊。

syslogfacility auth

「syslogfacility」設定在記錄來自sshd的訊息的時候,是否給予「facility code」。

loglevel info

「loglevel」設定記錄sshd日誌訊息的層次。 info是一個好的選擇。查看sshd的man幫助頁,已獲得更多的資訊。

rhostsauthentication no

「rhostsauthentication」設定只使用rhosts或「/etc/hosts.equiv」進行安全驗證是否已經足夠了。

rhostsrsaauthentication no

「rhostsrsa」設定是否允許以rhosts或「/etc/hosts.equiv」加上rsa進行安全驗證。

rsaauthentication yes

「rsaauthentication」設定是否允許只有rsa安全驗證。

passwordauthentication yes

「passwordauthentication」設定是否允許口令驗證。

permitemptypasswords no

「permitemptypasswords」設定是否允許以口令為空的帳號登入。

allowusers admin

「allowusers」的後面可以跟著任意的數量的用戶名的匹配串(patterns)或user@host這樣的匹配串,這些字串用空格隔開。主機名稱可以是dns名稱或ip位址。

將ssh2相容格式的公鑰轉換成為openssh相容格式

ssh-keygen -i -f identity.pub >> /root/.ssh/ authorized_keys2

以上是linux ssh使用的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除