ssh
时间: 2024-06-01
安装
Linux平台
Windows平台
可以查看Windows官网参考文档
方式一
打开设置
→应用
→可选功能
,可以看到OpenSSH
服务器和客户端。点击安装后会提示重启,文件会放在C:\Windows\System32\OpenSSH
。
方式二
首先在Github下载可执行文件。
默认会安装在C:\Program Files\OpenSSH
。可以在PS中查看Get-Service -Name ssh*
状态,然后在cmd中测试连接:
ssh -p 22 username@localhost
简单说明
安装成功后,会添加sshd
(OpenSSH SSH Server)和 ssh-agent
(OpenSSH Authentication Agent)两个服务。
配置文件为C:/ProgramData/ssh/sshd_config
。
基本配置
配置默认Shell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "D:\Git\bin\bash.exe" -PropertyType String -Force
ssh-keygen简介
参数 | 说明 |
---|---|
-t | 密钥类型,可以选择 dsa 、ecdsa 、ed25519 和rsa (默认) |
-f | 密钥目录位置,默认为~/.ssh/ ,默认密钥文件名以id_rsa 开头 |
-C | 备注信息 |
-N | 密钥对的密码,指定后命令执行过程中就不会出现交互确认密码的信息 |
使用密钥文件登录
首先生成公钥和私钥文件。
ssh-keygen -C "Test" -t rsa
这将生成id_rsa
(私钥)和id_rsa.pub
(公钥)。然后将公钥更名为authorized_keys
,放在用户的SSH目录下,比如C:\Users\username\.ssh\
。
::: danger
注意文件的编码使用utf-16
而非utf-8
,否则会导致公钥过长出现 line 1 exceeds size limit
错误。
:::
打开sshd
配置文件,Windows为C:\ProgramData\ssh\sshd.config
,Linux为。
确保以下3条没有被注释:
# 使用公钥
PubkeyAuthentication yes
# 公钥位置
AuthorizedKeysFile .ssh/authorized_keys
确保以下2条有注释掉:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
重启服务:
net stop sshd
net start sshd
注意:免密登录的时候也要指定用户名,比如:
$ ssh root@13.75.14.24 -p 2809 -i /d/tencent
进阶
多SSH账号登录
虽然同一个密钥,可以登录许多不同的网站,只要使用同一个公钥。但是如果我们想要生成多组不同的密钥对,可以在用户名\.ssh\config
中配置如下:
# 配置github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\purehol\\.ssh\\rsa_github
PreferredAuthentications publickey
User purehol
# 配置gitee.com
Host gitee.com
HostName gitee.com
IdentityFile C:\\Users\\purehol\\.ssh\\rsa_gitee
PreferredAuthentications publickey
User purehol
参数 | 说明 |
---|---|
Host | 可以任意取。注意:会影响git相关命令。 |
HostName | 真实的域名地址 |
IdentityFile | 密钥文件的路径 |
PreferredAuthentications | 登录时权限认证方式,可设为publickey 、password publickey 、keyboard-interactive 等 |
User | 配置使用用户名 |
# 测试连接
ssh -T git@github.com
Hi 520Book! You've successfully authenticated, but GitHub does not provide shell access.
常见错误
REMOTE HOST IDENTIFICATION HAS CHANGED!
在使用SSH连接时,会在本地生成一个认证,储存在known_hosts
中,我们可以通过一下命令查看:
$ ssh-keygen -l -f ~/.ssh/known_hosts
解决办法就是找到上面你的IP,执行下列命令:
$ ssh-keygen -R 35.12.21.52
UNPROTECTED PRIVATE KEY FILE!
使用密钥登录的时候,ssh
对检查密钥文件的权限,如果权限太高,就会提示错误。修正如下:
chmod 600 /opt/key.pem