利用ssh进行免密远程的配置
windows端
安装
方法一
windows+I
打开设置, 进入系统
,选择可选功能
。 输入框中搜索openssh, 即可看到两个选项, 分别为OpenSSH Client与OpenSSH Server。 由于此电脑为被远程端, 则笔者选择了OpenSSH Server.
方法二
- 使用Windows + R快捷键打开「运行」对话框,输入powershell,然后按Ctrl + Shift + Enter以管理员权限打开 PowerShell 窗口。
- 通过命令
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
检查OpenSSH安装状态, 如果状态为Installed则为已安装, 否则未安装。 - 安装服务端命令为
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
, 客户端为Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
启动与配置
启动
- 使用Windows + R快捷键打开「运行」对话框,输入powershell,然后按Ctrl + Shift + Enter以管理员权限打开 PowerShell 窗口。
- 通过命令
Set-Service -Name sshd -StartupType 'Automatic'
设置sshd服务开机启动 - 通过命令
Start-Service sshd
启动sshd服务 - 查看当前sshd服务监听端口
netstat -an | findstr /i ":22"
配置
- 通常配置在
C:\ProgramData\ssh
目录下的sshd_config
文件中, 通过文本编辑器打开 - 如果想通过公私钥免密登录, 则需取消
PubkeyAuthentication yes
注释, 并修改PasswordAuthentication为no - 可以在配置文件中看到
AuthorizedKeysFile=.ssh/authorized_keys
, 表明客户端受认证的公钥存储在这个文件, 如果不存在则创建。 所以打开目录C:\Users\用户名\.ssh
, 创建authorized_keys
, 把客户端同目录下的id_rsa.pub
文件内容拷贝到创建authorized_keys
文件中。 - 重启服务:
Restart-Service sshd
- 笔者配置到这以为就可以免密登录了,客户端登录,结果报错
Permission denied(publickey,password)
- 第3步骤缺少一个配置就是一定要注释掉关键两行:
Match Group administrators
与AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- 修改后重启服务再登录就ok了
大概配置如下:
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
linux端
安装
sudo apt install openssh-server
启动与配置
启动
systemctl 方式
# 启动
sudo systemctl start sshd.service
# 重启
sudo systemctl start sshd.service
# 停止
sudo systemctl stop sshd.service
# 状态
sudo systemctl status sshd.service
service方式
# 启动
sudo service sshd start
# 重启
sudo service sshd restart
# 停止
sudo service sshd stop
# 状态
sudo service sshd status
配置
- 配置文件通常位于
/etc/ssh/sshd_config
- 免密配置基本与windows相同
- 创建了
authorized_keys
文件后需要修改权限, 否则连接报错。 修改权限命令chmod 600 ~/.ssh/authorized_keys
客户端配置
- 通过
ssh-keygen -t rsa
生成公私钥, 通常在用户目录下的.ssh目录下生成公私钥文件id_rsa
及id_rsa.pub
- 将公钥内容复制到服务器同级目录的
authorized_keys
文件中