配置ssh免密码登录
全文假定使用openSSH或一般情况下Linux自带的ssh。
Linux系统下
首先找到私钥文件。在
~/.ssh/
下。
检查是否有id_rsa这个私钥文件。如果没有,则使用命令
ssh-keygen -t rsa
生成一个私钥。生成时需要输入你设定的密码。
生成完毕后除了私钥id_rsa外还会生成公钥id_rsa.pub。我们要使用公钥,让服务器知道公钥,这样下一次就知道我们来了,直接放行。
将自己(客户端)的公钥复制到服务器上去,存储到
~/.ssh/
下,然后将内容添加到
~/.ssh/authorized_keys
内。可以使用下面的命令实现
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #直接追加
cp id_rsa.pub authorized_keys #如果不存在那么直接改名即可。
#两个命令执行一个,反正authorized_keys有自己私钥就行。
然后就可以直接无密码登录了。
如果有多个客户机那就添加多个客户机的公钥到服务器上。
Windows系统下
首先假设你的openssh已经正常可工作。如果没安装那先安装。安装很方便,Windows10直接在可选功能添加openssh即可,此处不赘述。
然后,在”服务“开启ssh服务测试下。或者使用下面的命令,在PowerShell管理员权限下运行
Start-Service sshd
以及确保防火墙放行。
然后和Linux下一个方式,把自己(客户机)的公钥复制过去,追加到authorized_keys后面即可。
具体位置是
%username%\.ssh\authorized_keys
添加好后,修改
C:\ProgramData\ssh\sshd_config #这是一个隐藏文件夹下的
#如果没有这个文件,那么启动一次sshd即可生成
在sshd_config内,修改以下:
确保以下2条没有被注释
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
确保以下2条有注释掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
其余不做修改
如果要改端口号也是从这里改,即修改:
port 13006 #端口改为13006
然后重启sshd服务
Restart-Service sshd #PowerShell管理员权限运行
正常来讲应该就好了。
2023年11月24日
