SSH:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第11行: | 第11行: | ||
===密钥登录=== | ===密钥登录=== | ||
==== 生成公钥和私钥 ==== | |||
在本地电脑使用<code>ssh-keygen</code>命令,默认使用rsa算法。输入命令后第一次询问保存位置,回车保存默认位置即可。第二询问钥保护密码,可以输入密码或回车不设置密码,如果设置登录时需要提供私钥和私钥保护密码。 | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ssh-keygen | ssh-keygen | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 服务器配置 ==== | |||
* 将公钥放到服务器用户目录下~/.ssh/authorized_keys 文件。 | * 将公钥放到服务器用户目录下~/.ssh/authorized_keys 文件。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
第35行: | 第38行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 客户端登录设置 ==== | |||
当使用默认名称的密钥id_rsa,可以不配置,直接登录,如: | |||
ssh user@46.100.162.172 | |||
如果多个密钥对,登录多台服务器,可以在<code>~/.ssh/config</code>文件中设置服务器对应的认证密钥文件,如: | |||
<syntaxhighlight lang="ssh"> | |||
Host 46.100.162.172 | |||
Hostname 46.100.162.172 | |||
User user | |||
IdentityFile /home/yourname/.ssh/ali_rsa | |||
Host tenxun | |||
Hostname 11.100.162.172 | |||
User ubuntu | |||
IdentityFile /home/yourname/.ssh/tenxun_rsa | |||
</syntaxhighlight> | |||
第44行: | 第62行: | ||
! 官网 | ! 官网 | ||
|- | |- | ||
| GNOME Terminal | |||
| Linux | |||
| GNOME桌面自带终端,如Ubuntu中的终端软件。可以设置多个配置文件,从而可以快速启动应用或登录不同服务器。 | |||
| | |||
|- | |||
| Windows Terminal | |||
| Windows | |||
| 微软开源的一款终端软件。支持命令提示符、PowerShell和WSL等shell。可以设置多个配置文件。 | |||
| 官网:https://docs.microsoft.com/zh-cn/windows/terminal/ <br \>源代码:https://github.com/Microsoft/Terminal | |||
|- | |||
| PuTTY | | PuTTY | ||
| | | |
2021年12月21日 (二) 16:17的版本
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
在设计上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeley rlogin、rsh、rexec等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人攻击。SSH旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。不过,SSH也被指出有被嗅探甚至解密的漏洞。
简介
时间轴
SSH登录
密码登录
密钥登录
生成公钥和私钥
在本地电脑使用ssh-keygen
命令,默认使用rsa算法。输入命令后第一次询问保存位置,回车保存默认位置即可。第二询问钥保护密码,可以输入密码或回车不设置密码,如果设置登录时需要提供私钥和私钥保护密码。
ssh-keygen
服务器配置
- 将公钥放到服务器用户目录下~/.ssh/authorized_keys 文件。
#服务器在用户目录下创建.ssh
mkdir .ssh
#将本地生成的公钥id_rsa.pub复制到服务器authorized_keys
scp C:\Users\username/.ssh/id_rsa.pub user2@46.100.162.172:/home/user2/.ssh/authorized_keys
- 禁止用密码登录。修改服务器 sshd 的配置文件。
# 使用vim编辑器修改
sudo vim /etc/ssh/sshd_config
#将PasswordAuthentication修改为no,按esc键及:wq键保存退出
PasswordAuthentication no
#重启ssh服务
service ssh restart
客户端登录设置
当使用默认名称的密钥id_rsa,可以不配置,直接登录,如:
ssh user@46.100.162.172
如果多个密钥对,登录多台服务器,可以在~/.ssh/config
文件中设置服务器对应的认证密钥文件,如:
Host 46.100.162.172
Hostname 46.100.162.172
User user
IdentityFile /home/yourname/.ssh/ali_rsa
Host tenxun
Hostname 11.100.162.172
User ubuntu
IdentityFile /home/yourname/.ssh/tenxun_rsa
客户端软件
名称 | 支持系统 | 描述 | 官网 |
---|---|---|---|
GNOME Terminal | Linux | GNOME桌面自带终端,如Ubuntu中的终端软件。可以设置多个配置文件,从而可以快速启动应用或登录不同服务器。 | |
Windows Terminal | Windows | 微软开源的一款终端软件。支持命令提示符、PowerShell和WSL等shell。可以设置多个配置文件。 | 官网:https://docs.microsoft.com/zh-cn/windows/terminal/ 源代码:https://github.com/Microsoft/Terminal |
PuTTY | https://www.chiark.greenend.org.uk/~sgtatham/putty/ | ||
XShell | https://www.netsarang.com/zh/xshell/ |
常见问题
- 首次登录时出现“所选的用户密钥未在远程主机上注册”。
可以在服务器上查看密钥的指纹,对比两者是否相同,防止受到中间人攻击。
# 列出服务器ssh密钥文件
ls -al /etc/ssh/*pub
# 查看rsa密钥指纹
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub | awk '{print $2}'
资源
相关教程
- 微软 Azure 文档:详细步骤:创建和管理 Azure 中的 Linux VM 用于身份验证的 SSH 密钥
- 阿里云文档:SSH密钥对
- 阿里云文档:通过密钥认证登录Linux实例
- 网道:SSH教程
- 《Pro Git》:4.3 服务器上的 Git - 生成 SSH 公钥