嘉之嘆息
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:RuFWcXWowqW6aUvRPqdQS9wBsBtU5rdDSuZCPFcDe2I. Please contact your system administrator. Add correct host key in /Users/zhaorui/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/zhaorui/.ssh/known_hosts:6 RSA host key for [localhost]:29418 has changed and you have requested strict checking. Host key verification failed.
解決方式
1.在客戶端執行下述指令
#vi ~/.ssh/known_hosts
2.例如我的機子IP地址為:119.19.19.19
則把里面與所要連接IP(119.19.19.19)相關的內容刪掉即可.
Ubuntu 下安裝 SSH Server :
sudo apt-get install openssh-server
(查看返回的結果,如果沒有出錯,則用putty、SecureCRT、SSH Secure Shell Client等SSH 客戶端軟件,輸入您服務器的 IP 地址。如果一切正常的話,等一會兒就可以連接上了。並且使用現有的用戶名和密碼應該就可以登錄了。)
然后確認sshserver是否啟動了:(或用“netstat -tlp”命令)
ps -e | grep ssh
如果只有ssh-agent那ssh-server還沒有啟動,需要/etc/init.d/ssh start,如果看到sshd那說明ssh-server已經啟動了。
ssh-server配置文件位於/ etc/ssh/sshd_config,在這里可以定義SSH的服務端口,默認端口是22,你可以自己定義成其他端口號,如222。然后重啟SSH服務:
sudo /etc/init.d/ssh resart
事實上如果沒什么特別需求,到這里 OpenSSH Server 就算安裝好了。但是進一步設置一下,可以讓 OpenSSH 登錄時間更短,並且更加安全。這一切都是通過修改 openssh 的配置文件 sshd_config 實現的。
首先,您剛才實驗遠程登錄的時候可能會發現,在輸入完用戶名后需要等很長一段時間才會提示輸入密碼。其實這是由於 sshd 需要反查客戶端的 dns 信息導致的。我們可以通過禁用這個特性來大幅提高登錄的速度。
首先,打開 sshd_config 文件:
sudo nano /etc/ssh/sshd_config
找到 GSSAPI options 這一節,將下面兩行注釋掉:
#GSSAPIAuthentication yes #GSSAPIDelegateCredentials no然后重新啟動 ssh 服務即可:
sudo /etc/init.d/ssh restart
再登錄試試,應該非常快了吧
利用 PuTTy 通過證書認證登錄服務器
SSH 服務中,所有的內容都是加密傳輸的,安全性基本有保證。但是如果能使用證書認證的話,安全性將會更上一層樓,而且經過一定的設置,還能實現證書認證自動登錄的效果。
首先修改 sshd_config 文件,開啟證書認證選項:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys修改完成后重新啟動 ssh 服務。
下一步我們需要為 SSH 用戶建立私鑰和公鑰。首先要登錄到需要建立密鑰的賬戶下,這里注意退出 root 用戶,需要的話用 su 命令切換到其它用戶下。然后運行:
ssh-keygen
這里,我們將生成的 key 存放在默認目錄下即可。建立的過程中會提示輸入 passphrase,這相當於給證書加個密碼,也是提高安全性的措施,這樣即使證書不小心被人拷走也不怕了。當然如果這個留空的話,后面即可實現 PuTTy 通過證書認證的自動登錄。
ssh-keygen 命令會生成兩個密鑰,首先我們需要將公鑰改名留在服務器上:
cd ~/.ssh mv id_rsa.pub authorized_keys然后將私鑰 id_rsa 從服務器上復制出來,並刪除掉服務器上的 id_rsa 文件。
服務器上的設置就做完了,下面的步驟需要在客戶端電腦上來做。首先,我們需要將 id_rsa 文件轉化為 PuTTy 支持的格式。這里我們需要利用 PuTTyGEN 這個工具:
點擊 PuTTyGen 界面中的 Load 按鈕,選擇 id_rsa 文件,輸入 passphrase(如果有的話),然后再點擊 Save PrivateKey 按鈕,這樣 PuTTy 接受的私鑰就做好了。
打開 PuTTy,在 Session 中輸入服務器的 IP 地址,在 Connection->SSH->Auth 下點擊 Browse 按鈕,選擇剛才生成好的私鑰。然后回到 Connection 選項,在 Auto-login username 中輸入證書所屬的用戶名。回到 Session 選項卡,輸入個名字點 Save 保存下這個 Session。點擊底部的 Open 應該就可以通過證書認證登錄到服務器了。如果有 passphrase 的話,登錄過程中會要求輸入 passphrase,否則將會直接登錄到服務器上,非常的方便。
SSH Secure File Transfer Client 登錄時遇到問題提示:
“Connection closed by remote host the connection to the remote host was lost .
this usually means that you network connection went down or that the remote host
was rebooted most network outages are short. and thus trying again may work ”
原因之一:沒有生成ssh key
sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
在終端中輸入:sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key重新建立ssh_host_dsa_key文件
以下是返回信息
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):(直接回車)
Enter same passphrase again:(回車)
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@localhost.localdomain
在終端中輸入:sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key重新建立ssh_host_rsa_key文件
以下是返回信息
Generating public/private rkey pair.
Enter passphrase (empty for no passphrase):(直接回車)
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_rey.pub.
key生成在目錄/etc/ssh
沒有.ssh目錄的話手動創建,注意,它的目錄權限是700
cat ssh_host_dsa_key.pub >> /root/.ssh/authorized_keys
ssh_host_dsa_rey這個放到客戶端
/etc/ssh/sshd_config配置如下
Port 22
PubkeyAuthentication yes
AuthorizedKeysFile /root/.ssh/authorized_keys
PasswordAuthentication no /*禁止密碼驗證登錄
重新登錄。