爱学习的好孩子

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 密钥类型,可以选择 dsaecdsaed25519rsa(默认)
-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 登录时权限认证方式,可设为publickeypassword publickeykeyboard-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

评论