前情提要

安全外壳协议是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

在使用SSH进行远程主机访问时,对于一个陌生的主机,我们需要知道其用户名和IP地址,例如:

1
2
3
4
ssh catcolia@192.168.1.123 -p 11451

# 示例输出内容如下:
catcolia@192.168.1.123's password: #这里输密码捏

这时需要我们输入密码,十分的不便捷。

补充: 这里的 -p 11451 是指定的端口,SSH的默认端口是22。如果你使用了内网穿透(如FRP)访问,那么就需要指定端口了。


免密登录和别名登录是懒人操作的好方法。
此时使用SSH登录被简化成如下方法:

1
ssh my-remote-host

嗯姆,密码也不需要输入了,十分的懒人。

设置别名登录

01. 创建SSH Config文件

我们首先需要在主机$HOME/.ssh文件夹创建一个SSH Config文件。

1
2
mkdir -p $HOME/.ssh
touch $HOME/.ssh/config

02. 设置别名登录

要想别名登录,我们只需要在config文件内添加远程主机的登录信息。
我先拿我已经写好的做个示例捏:

1
2
3
4
5
6
7
cat $HOME/.ssh/config

# 示例输出内容如下:
Host my-remote-host
HostName 192.168.1.123
Port 11451
User catcolia

嗯姆,结合上文所说,想必你应该已经看懂了:

  • Host 就是你指定的别名
  • HostName 是主机IP地址,填写域名也是可以的
  • Port 是端口号
  • User 是你指定登录的用户

只需要按照上述样式修改成你自己的登录信息放到$HOME/.ssh/config文件下就可以了捏,你还可以按照上述样式添加多个主机。

设置免密登录

01.创建密钥对

我们需要在$HOME/.ssh文件夹下创建一个秘钥文件,ssh-keygen工具用于生成公私钥文件,其中-t是指定秘钥加密类型,我们使用RSA作为加密类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ssh-keygen -t rsa

# 示例输出内容如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/catcolia/.ssh/id_rsa): # 按回车
Enter passphrase (empty for no passphrase): # 免密登录请按回车
Enter same passphrase again: # 按回车
Your identification has been saved in /Users/catcolia/.ssh/id_rsa
Your public key has been saved in /Users/catcolia/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tTAOAd3mpISP0AiW/+dduu3iruD3sfDYOmeF5GPpuug catcolia@CatcoliaMBP23.lan
The key's randomart image is:
+---[RSA 3072]----+
|.o.o.+.. |
|..o o o.+ |
| .. +.=o . |
| .. oo.= . |
| . S + |
| . . * o |
| .o.+.= |
| . o+=B+ |
| .E.*%O+o |
+----[SHA256]-----+

我们会发现其在$HOME/.ssh下创建了两个文件:

  • id_rsa           (这个是私钥)
  • id_rsa.pub   (这个是公钥)

02.复制公钥到远程主机

私钥当然不可以给别人用嘛,我们需要把公钥分发给需要远程的主机,很快就好。
我们使用ssh-copy-id命令将秘钥文件复制给远程主机,示例如下:

1
2
3
4
ssh-copy-id -i $HOME/.ssh/id_rsa catcolia@192.168.1.123

# 示例输出内容如下:
catcolia@192.168.1.123's password: #这里输密码捏

这里-i是指定识别文件,就是公钥的保存位置$HOME/.ssh/id_rsa

豪,这样我们就可以免密登录了。

1
ssh my-remote-host #舒服了

关闭密码登录提升安全性

待续