SSH自动输入密码,取消首次连接确认

SSH是最常用的工具了,ssh username@ipAddress 即发起到远程主机的访问。随后输入远程机器的密码即可连接,同时,首次连接到远程主机还会要求获得远程主机的公钥,这时必须手动输"yes". 下图是完整的连接过程。

user1@ha-To-be-filled-by-O-E-M:~$ ssh user2@192.168.1.5
The authenticity of host '192.168.1.5 (192.168.1.6)' can't be established.
ECDSA key fingerprint is SHA256:yIprcaFyxAR7lY/uXm6p6zMfdtXFSfb1DHI+Buf3MQ0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.5' (ECDSA) to the list of known hosts.
gf@192.168.1.5's password: 
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-32-generic x86_64)

再次登录同一个机器的时候,就不需要输入yes了

user1@ha-To-be-filled-by-O-E-M:~$ ssh user2@192.168.1.5
gf@192.168.1.5's password: 
Last login: Wed Dec 21 21 12:30:20 2021 from 192.168.154.2

这是因为第一次输入“yes”后,在~/.ssh/known_hosts中记录了链接到对方时,对方给的host key。之后每次远程链到统一台机器接都会检查目前对方给的host key与 你known_hosts记录的host key是否相同,相同的话就不需要输入yes了
(所以在本机的~/.ssh/known_hosts记录中找到远程连接的那条ip记录,删除之后, 再次连接 依然像第一次一样)

在自动化运维时,需要在一个脚本里自动连接到远程主机,这时候是没有人等在屏幕前输密码和yes指令的

但是对于首次连接的主机,或者ip地址改变后的主机,还是需要输入yes确认密钥。
禁用认证确认步骤可以解决这一问题。

方法一:设置取消严格的key检查

can set the StrictHostKeyChecking option to no on the command line, and/or send the key to a null known_hosts file. You can also set these options in your config file, either for all hosts or for a given set of IP addresses or host names.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

方法二:在配置文件中设置对某些连接的地址的key自动跳过

To disable (or control disabling), add the following lines to the beginning of /etc/ssh/ssh_config.

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

记得更改完配置,重启sshd服务

方法三:在发起端配置文件中设置,跳过验证提示

修改本机的/etc/ssh/ssh_config文件,如果没有root权限,也可以添加或者更改~/.ssh/config文件:

"# StrictHostKeyChecking ask" 为 "StrictHostKeyChecking no",

#
StrictHostKeyChecking no

然后重启sshd服务即可

posted @ 2024-06-24 15:17  枫奇丶宛南  阅读(202)  评论(0编辑  收藏  举报