背景:
工作中经常需要后台登录到远端操作系统,例如windows和linux系统。比较常用的是SSH命令,它在终端就可以直接执行,然后输入远端操作系统的用户名和密码即可。
本文介绍如何通过部署SSH服务端以及合入配置两台计算机的信任关系,从而实现免密登录。
环境:
1、本地是Windows10系统
2、远端1是Windows10系统
3、远端2是Debian11 Linux系统
主要步骤:
1、给本地计算机生成密钥文件
2、给远端计算机安装SSH服务
3、配置本地计算机和远端计算机的信任关系
具体操作:
1、给本地计算机生成密钥文件
(1)打开cmd命令窗口,执行命令:
ssh-keygen
ps: 执行过程中一路回车键即可
(2)执行完成后会在当前用户路径 C:\Users\用户名\ .ssh 生成几个文件:
这里的id_ras.pub文件是计算机的公钥文件,先把它复制到远端计算机备用(后面建立两台计算机的信任关系会用到)
2、给远端计算机安装SSH服务
情况一:远端计算机是Windows10系统
请参考:https://blog.csdn.net/marwenx/article/details/106096790
情况二:远端计算机是Debian Linux系统
sudo apt-get update
sudo apt-get install ssh
3、配置本地计算机和远端计算机的信任关系
情况一:远端计算机是Windows10系统
(1)把上面本地计算机生成的id_rsa.pub 文件拷贝到远端计算机的 C:\Users\“用户名”\.ssh
目录 下,并修改文件名称为 authorized_keys
PS:如果有多台计算机需要和此计算机建立信任关系,则把多台计算机的公钥文件内存都拷贝到authorized_keys文件中即可
(2) 再修改 C:\ProgramData\ssh\sshd_config
配置文件:
ps:这里的ProgramData文件夹默认是是隐藏文件夹,可以取消隐藏或者通过搜索找到
确保以下3条没有被注释,后边的yes或no要写对
PubkeyAuthentication yes #启用SSH密钥认证
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes #启用输入密码认证
确保以下2条注释掉
#Match Group administrators
#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
(3)以管理员用户打开powershell软件,再重启ssh服务
net stop sshd
net start sshd
Set-Service sshd -StartupType Automatic #设置开机自启动
情况二:远端计算机是Debian Linux系统
(1)把上面本地计算机生成的id_rsa.pub 文件拷贝到远端计算机的 ~/.ssh
文件夹下,然后
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
(2)修改/etc/ssh/sshd_config
配置文件,如下几个参数修改如下:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
Port 22
(3)重启ssh服务
systemctl restart sshd
重要:这里创建的信任关系是当前用户的,如果需要root用户的信任关系,可以直接复制
~/.ssh
文件夹到 /root目录下
sudo cp -rf ~/.ssh /root //把当前用户下的.ssh文件夹拷贝到root用户根目录下
测试:
配置完成后在本地通过如下命令登录远端系统,如无需输入密码即可登录则配置完成
ssh user_name@ip_address