centos7:ssh免密登陸設置及常見錯誤


一、免密登錄設置

1、使用root用戶登錄,進入到目錄/root/.ssh

2、執行命令:ssh-keygen -t rsa

一路回車,完成后會在目錄/root/.ssh下面生成文件 id_rsa和id_rsa.pub

3、將公鑰寫入文件authorized_keys:cat id_rsa.pub >> authorized_keys

4、重復1、2、3,直到要免密登錄的所有機器都生成了id_rsa和id_rsa.pub文件和authorized_keys

5、將其他機器的公鑰拷貝到第一台機器authorized_keys文件中:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

6、將第一台機器的authorized_keys復制到其他機器

scp /root/.ssh/authorized_keys ip:/root/.ssh/

提示報錯:Permission denied, please try again.

可能原因:

1、目錄或文件沒有寫權限(默認不會),解決:chmod 700 .ssh chmod 644 authorized_keys

2、ssh服務需要修改下配置,解決:

修改目標服務器的/etc/ssh/sshd_config中的PermitRootLogin 為 yes ,然后重啟ssh(systemctl restart sshd.service)

7、驗證(第一次需密碼)

ssh ip

注:上述實現了root用戶之間的免密操作,如果要實現其他用戶,則使用其他用戶登錄,進行上述操作,生成的密鑰文件會在用戶目錄下的.ssh下。

如果已經實現了一個用戶免密,要實現其他用戶免密,可以將實現免密的用戶下的.ssh目錄下的文件拷貝到其他用戶下即可。

二、常見錯誤

一般為了方便運維管理都會配置ssh免密登錄,ssh免密登錄實現也很方便。今天遇到一個完成了配置了卻不能生效的問題。

遇到這個問題一般有以下幾點:

  • authorized_keys文件是否啟用
  • .ssh 和 authorized_keys 文件權限問題

檢查AuthorizedKeysFile配置是否啟用authorized_keys

···bash

root@pts/1 $ cat /etc/ssh/sshd_config |egrep AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys


沒有問題,繼續檢查.ssh (700) 和 authorized_keys(644) 權限

```bash

root@pts/1 $ getfacl /root/.ssh/
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/
# owner: root
# group: root
user::rwx
group::---
other::---

root@pts/1 $ getfacl /root/.ssh/authorized_keys
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/authorized_keys
# owner: root
# group: root
user::rw-
group::---
other::---

authorized_keys 權限不對,修改一下chmod 644 authorized_keys

再次嘗試結果發現還是不行。但是該設置的權限都設置了。既然.ssh目錄和其下文件的權限都OK了,那就檢查下其父目錄的權限,也就是這里的/root的權限


root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: ftpuser
# group: ftpuser
user::r-x
group::r-x
other::---

發現這里/root 的屬主都發生了變化。為了不影響別的業務情況,保留這里的ftpuser權限,利用setfacl添加特殊ACL權限


root@pts/1 $ chown -R root:root  /root/
root@pts/1 $ setfacl -m u:ftpuser:rwx /root/

root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::rwx
user:ftpuser:rwx        #effective:r-x
group::r-x
mask::r-x
other::r-x

附加

權限問題

  • /root 775
  • /root/.ssh 700
  • /root/.ssh/authorized_keys 644
  • 開啟文件AuthorizedKeysFile .ssh/authorized_keys

三、CentOS7再ssh-copy-id時的錯誤

1、在幾台主機搭好環境后,centos7系統,幾台機器全部執行了ssh無密碼操作后,由於
IP的問題而需要為某一台服務器重新配置IP,也就是換了一個IP但是主機名並沒有改變,
ssh-copy-id dgb@ceph1 時就報了以下的錯誤


/bin/ssh-copy-id: ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: The ECDSA host key for ceph-admin has changed,
ERROR: and the key for the corresponding IP address 192.168.0.10
ERROR: is unknown. This could either mean that
ERROR: DNS SPOOFING is happening or the IP address for the host
ERROR: and its host key have changed at the same time.
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: 6e:77:fc:47:14:4c:98:46:c8:c8:49:01:a8:fe:83:ee.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /home/dgb/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/dgb/.ssh/known_hosts:4
ERROR: ECDSA host key for ceph-admin has changed and you have requested strict checking.
ERROR: Host key verification failed.

解決辦法其實在報錯信息中已經存在了:
ERROR: Add correct host key in /home/dgb/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/dgb/.ssh/known_hosts:4
查看/home/dgb/.ssh/known_hosts這個文件,里面是:
ceph-admin,192.168.0.10 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph1,192.168.0.11 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph2,192.168.0.12 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph3,192.168.0.13 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph4,192.168.0.14 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDhXt1f/8evGZ4U7RBqV8bRi6O/ZcZvmWjPyZA6HQsFQF9M0Y2Usq3VvTW46dWaaNRMpRbwzmUYLwADV/RsXm1c=
ceph-rgw2,192.168.0.30 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFlk04wCYYRhNqPrGlyUt7OTPhE1yU33+CWo1iTXJj7c+aU87z2saGGnTqCylQmz+yAdO7vMPGsIin5GqxODnkA=

找到以前的IP並且刪除,然后再做ssh-copy-id操作即可。


免責聲明!

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



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