免密登陆
免密登录服务器
命令行登陆
ssh:secure shell protocol
,以更加安全的方式连接远程服务器,默认端口号是 22
- 安装 cygwin 或 mingw(git 自带)
bash
$ ssh xx.xx.xx.xx
也可以直接使用 FinalShell、MobaXterm 或 XShell 等工具进行连接
免密登陆
如下方法是直接用命令行操作
安装
Remote - SSH
插件,即可在 VSCode 中进行配置配置别名快速登录:ssh-config(也可以直接找到本机的 .ssh 配置进行修改)
Ctrl + Shift + P
,之后输入 ssh点击配置 SSH 主机,随后的弹出框一般情况下点击一个就行
之后输入如下配置
bashHost lyn HostName xx.xx.xx.xx User root # 就可以直接登陆了(需要输入密码) $ ssh lyn
之后我们希望能免密快速登录
bash# 提示你输入密码,成功后可以直接 ssh 登陆 $ ssh-copy-id lyn # 就可以直接登陆了(无需输入密码) $ ssh lyn
如果是服务器与服务器之间进行免密登陆,可以使用如下命令
bash$ ssh-copy-id root@xx.xx.xx.xx
免密登陆条件
- 两个文件:本地环境的
~/.ssh/id_rsa.pub
与远程服务器的~/.ssh/authorized_keys
- 一个动作:把本地文件
~/.ssh/id_rsa.pub
中内容复制粘贴到远程服务器远程服务器~/.ssh/authorized_keys
免密克隆项目(Github)
首先可以检查网络与 GitHub 是否是通的,如果通的可以直接 git clone https:xxx
bash
$ ping github.com
正在 Ping github.com [20.205.243.166] 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
20.205.243.166 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
生成秘钥
若 HTTPS 持续失败(如上),可以切换使用 SSH 协议
- 2018年以前的版本中默认使用的是 RSA-2048 算法,但是这个秘钥长度较短存在潜在安全风险(如抗量子攻击能力弱,使用量子计算机破解可能仅需数小时)
- 2018-2020年转向更安全的 RSA-4096 算法,但仍非强制默认
- 2020年之后优先推荐 Ed25519 算法(基于椭圆曲线 Curve25519,抗侧信道攻击,秘钥更短)
bash
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/Admin/.ssh/id_ed25519):
Enter passphrase for "/c/Users/Admin/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Admin/.ssh/id_ed25519
Your public key has been saved in /c/Users/Admin/.ssh/id_ed25519.pub
添加公钥到 Github
复制 ~/.ssh/id_ed25519.pub
内容,粘贴到 GitHub SSH Keys 页面
测试 SSH 连接,可能会出现如下情况
bash
# 失败
$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out
# 成功
$ ssh -T git@github.com
Hi llwodexue! You've successfully authenticated, but GitHub does not provide shell access.
失败的的需要修改 SSH 端口,因为 SSH 默认端口被防火墙屏蔽了(22),这里可以改用 HTTPS 端口(443)
bash
$ vim ~/.ssh/config
Host github.com
Hostname ssh.github.com
Port 443
User git
如果 443 也被屏蔽了建议不要使用 SSH 协议,改用 HTTPS 协议,Windows 可以修改 hosts 文件,增加 github.com 的域名映射
- 可以在该网站查询 github.com 的全球网址: https://dnschecker.org/#A/github.com
bash
20.205.243.166 github.com