尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux ssh 免密登录配置

Linux ssh 免密登录配置 参考资料~/.ssh/configについて~/.ssh/configを使ってSSH接続を楽にする.ssh/configファイルでSSH接続を管理する目录一. 密钥生成1.1 生成工具1.1.1 OpenSSH1.1.2 Git1.2 生成命令1.3 注意事项1.4 解决路径中的用户名乱码二. 将公钥配置到目标服务免密登录2.1 方式1 ssh-copy-id命令行工具2.2 方式2 手动添加2.3 效果三. 免密登录config文件配置3.1 配置文件内容3.2 效果四. 服务器端公钥位置修改五. REMOTE HOST IDENTIFICATION HAS CHANGED!问题一. 密钥生成1.1 生成工具1.1.1 OpenSSH⏹Win10系统默认安装了OpenSSH⏹在C:\Windows\System32\OpenSSH\路径中可以看到可执行文件。1.1.2 Git⏹如果系统中安装了Git那么在默认的安装路径C:\Program Files\Git\usr\bin中也可找到ssh可实行文件。1.2 生成命令⏹在命令行窗口输入下面的命令即可生成一对公钥和私钥。-C为密钥添加注释通常用于标识密钥。如果忽略此选项则会使用用户名主机名来当做密钥注释添加到密钥中。-t指定密钥算法可以省略当不指定算法的时候 默认使用比较新的 ed25519 算法-f用户指定密钥生成的路径和密钥名称默认情况下密钥将保存到~/.ssh/id_rsa私钥~/.ssh/id_rsa.pub公钥# ################################### rsa已经属于比较老的算法了# 当不指定算法的时候# 默认使用比较新的 ed25519 算法# ##################################ssh-keygen-Cfengyehong123example.com# windows中ssh-keygen-trsa-Cfengyehong123example.com-fC:\Users\用户名称\.ssh\ubuntu22_key# linux中ssh-keygen-trsa-Cfengyehong123example.com-f~/.ssh/id_rsa1.3 注意事项⏹在Windows中如果当前的用户名中包含汉字在未指定密钥生成的路径的情况下会乱码。⏹使用Git自带的ssh工具进行生成可以避免汉字用户名的乱码问题但是默认情况下Win10自带的OpenSSH在环境变量中的权限高于Git中的权限所以直接在命令行中输入ssh-keygen命令调用的是OpenSSH的ssh命令并非Git中的命令。1.4 解决路径中的用户名乱码⏹方式1指定生成密钥的路径中不包含汉字⏹方式2直接使用git命令行窗口进行生成此时使用的是git的ssh工具⏹方式3修改环境变量降低OpenSSH工具的优先顺此时使用的是git的ssh工具二. 将公钥配置到目标服务免密登录2.1 方式1 ssh-copy-id命令行工具⏹通过ssh-copy-id指定本地公钥的路径传输到目标服务器上默认情况下公钥 和 私钥在一个文件夹下ssh-copy-id-i~/.ssh/id_rsa.pub apluser192.168.118.136如果生成了密钥之后将私钥放到了其他文件夹下的话需要使用-f配置项强制指定只传输公钥否则会报错找不到私钥ssh-copy-id-i-f~/.ssh/id_rsa.pub apluser192.168.118.136⏹下图所示通过Git的命令行窗口将公钥配置到目标服务器上⏹公钥传输完毕之后在目标服务器的~/.ssh/authorized_keys路径中可以看到。2.2 方式2 手动添加⏹可以将公钥上传到服务器然后添加到authorized_keys文件中cat~/.ssh/id_rsa.pub~/.ssh/authorized_keys⏹由于是手动添加所以需要在服务器端重启一下ssh服务/etc/init.d/ssh restart2.3 效果⏹如果我们的私钥存储在当前用户的.ssh文件夹中输入ssh apluser192.168.118.136即可免密登录。⏹如果我们的私钥并不存储在当前用户的.ssh文件夹中指定私钥的位置即可完成免密登录。sshapluser192.168.118.136-i私钥的位置三. 免密登录config文件配置3.1 配置文件内容⏹configHost ubuntu_22 HostName192.168.118.136 User apluser Port22StrictHostKeyChecking no# 指定密钥的位置IdentityFile D:\id_rsa3.2 效果⏹如下图所示直接通过配置文件中的别名完成免密登录。四. 服务器端公钥位置修改⏹在服务器端的/etc/ssh/sshd_config文件中有关于认证文件的配置如果不想让公钥存储在默认路径下可修改AuthorizedKeysFile的相关内容指定公钥路径apluserubuntu221:~$ls-l/etc/ssh/sshd_config -rw-r--r--1root root3255Aug902:33 /etc/ssh/sshd_config apluserubuntu221:~$ apluserubuntu221:~$grepAuthorizedKeysFile /etc/ssh/sshd_config#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2⏹修改sshd_config配置文件需要root用户权限%h当前用户的主目录⏹修改完毕之后同样需要在服务器端重启一下ssh服务确保配置文件实时反映。/etc/init.d/ssh restart五.REMOTE HOST IDENTIFICATION HAS CHANGED!问题⏹当第一次连接某个 SSH 服务器时ssh 或 sftp 会把远程服务器的 host key主机公钥指纹 存在本地的~/.ssh/known_hosts文件中。以后再次连接该主机时会用保存的主机公钥与服务器当前提供的公钥进行比较如果匹配 ✅则连接继续。如果 不匹配 ❌比如远程主机重新安装、密钥更新或 IP 被他人占用就会出现类似于下面的警告 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:OYtwkILXy0dkzCTnO2YclxZVOzQw9SzBHuaF3ve6Is. Please contact your system administrator. Add correct host key in /c/Users/Admin/.ssh/known_hosts to get rid of this message. Offending RSA key in /c/Users/Admin/.ssh/known_hosts:2 Host key for [192.168.3.23]:2222 has changed and you have requested strict checking. Host key verification failed. Connection closed⏹在确保要连接的远程服务器安全的前提下可通过如下方式解决删除host文件中的旧主机的记录ssh-keygen-R[192.168.3.23]:2222再一次连接目标主机时会出现类似于下面这种提示The authenticity of host [192.168.3.23]:2222 cant be established. RSA key fingerprint is SHA256:OYtwkILXy0dkzCTnO2YclxZVOzQw9SzBHuaF3ve6Is. Are you sure you want to continue connecting (yes/no)?输入yes之后它会把新的host key存入known_hosts文件中此后不会再有提示除非主机密钥再次变化。
返回列表