一、準備
ssh是現在Linux系統中,最經常使用到的遠程登入服務。ssh不僅僅只是提供對遠程聯機數據包加密的技術,而且提供了類似於ftp與cp的功能。在開始介紹服務之前請確認在您的機器上已經安裝了ssh,可以通過“rpm -qa | grep ssh”來查看(目前常用的是openssh)。我下面所做的測試均在:紅旗Asianux3.0
二、啓動服務及相關操作
服務器端:
[root@redflag ~]# service sshd start #啓動ssh服務
客戶端:
1. 遠程聯機
[root@redflag ~] # ssh IP/hostname 或者 ssh 用戶名@IP/hostname
會出現:Are you sure you want to continue connecting (yes/no)? yes <==請輸入 yes
Warning: Permanently added 'test.linux.org,192.168.0.100' (RSA) to the list of known hosts.
[email protected]'s password: <==請輸入root這個用戶的密碼!
2. sftp
在ssh服務中提供了類似於ftp的功能。
[root@redflag ~] # sftp IP/hostname 或者 sftp 用戶名@IP/hostname
[email protected]'s password: <==請輸入root這個用戶的密碼
sftp> <==等待輸入命令
可以採用FTP模式下的操作方法。下面來談一下對應的命令:
變換目錄 |
cd PATH |
列出目前所在目錄下的文件或目錄 |
ls dir |
建立/刪除目錄 |
mkdir/rmdir directory |
顯示目前所在的目錄 |
pwd |
刪除文件或目錄 |
rm |
將文件由本機上傳到遠程主機 |
put [本機目錄或文件] [遠程] put [本機目錄或文件] 如果是這種格式,則文件會放置到目前遠程主機的當前目錄下 |
將文件由遠程主機下載回來 |
get [遠程主機目錄或文件] [本機] |
? |
顯示命令的作用 |
bye |
離開 |
在ssh服務中提供了類似於cp命令一樣的文件複製功能,即scp。
[root@redflag ~] # scp /etc/crontab [email protected]:/home/denis # 將數據由本機上傳到遠程主機上
[root@redflag ~] # scp [email protected]:~/.bashrc . # 將數據由遠程主機下載到本機上 |
1.關於server keys的記錄數據:~/.ssh/known_hosts
當客戶端接受來自server端的Public key之後,會比對這個Key的正確性,而對比的文件是~/.ssh/known_hosts。若是接受到的這個public key並沒有被記錄在該文件中,要求你回答yes/no的那個信息纔會出現,而你回答yes後該public key信息就會被記錄起來,以留待下次登錄通一臺主機是檢查用。如果server key與~/.ssh/known_hosts比對成功,那麼就會直接進入等待密碼輸入的畫面,那就不必每次都得要輸入(yes/no)了。之前我在測試ssh時看到
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE 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 RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 6e:1a:60:d0:ee:d0:7c:91:df:94:de:09:35:7b:08:ba. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:8 RSA host key for hostname has changed and you have requested strict checking. Host key verification failed.
這個錯誤信息在告訴你,上次登入的遠程SSH主機的Key已經被改過了(可能是服務器端重新安裝/更新等),所以無法繼續登錄。解決方法:將/.ssh/know_host中,將欲連接的主機名稱的Key刪除,就可以重新聯機了。
[root@redflag ~] # ssh 192.168.0.18
2.ssh的配置文件
所有的SSH相關設置都放在/etc/ssh/sshd_config裏。下面就介紹一下主要使用的相關內容:
Port 22 # SSH默認使用22這個port,也可以使用多個port
Protocol 2,1 # 選擇SSH協議的版本,建議直接使用Protocol 2即可
ListenAddress
PermitRootLogin no # 是否允許root登錄。
AuthorizedKeysFile .ssh/authorized_keys #該設置作用,若要使用不需要密碼登錄的賬號,那麼這個賬號的存放文件所在文件名
DenyUsers # 不允許某個用戶登錄,DenyUsers test (該賬號無法登錄)
DenyGroups # 不允許某個羣組登錄;例如我們將我們不希望遠程聯機的多個用戶可以歸納在一個組之下,並在DenyGroups後加入該組名就可以實現了。
以上只是介紹了SSH配置文件內容中的一部分。注意當你更改過配置文件之後,需要將該服務重新系統之後設置纔會生效。