使用SSH链接矩池云教程
SSH简介
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。简单来说,SSH是一种网络协议,用于计算机之间的加密登录。SSH使用频率最高的场合是类Unix系统,当然Windows从10也开始自带OpenSSH了。
SSH提供两种级别的安全验证方式,一种是基于口令,另外一种是基于密钥。接下来我分别介绍一下两种方式具体的使用。这里我们是在Windows10下使用Terminal的方式来链接,如果是使用其他工具可以查看相对应的文档。
口令登录
SSH远程链接的命令非常简单。这里假设你需要链接的服务器用户名user,登录远程主机host,主机默认端口是22,那么访问的命令如下。
ssh -p 22 user@host
在矩池云平台上你可以直接点一下SSH命令后面的小复制按钮就可以得到对应的SSH命令了。
ssh -p 29722 root@hz.matpool.com
如果是第一次登录矩池云服务器,系统会出现下面的提示:
C:\Users\matpool>ssh -p 29722 root@hz.matpool.com
The authenticity of host '[hz.matpool.com]:29722' can't be established.
ECDSA key fingerprint is SHA256:kjNflO3R6SYR1/vgTYRT1VYqMziWFB4HrGi4Oq2y1go.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这段提示是系统无法确认服务器的真实性,只知道它的公钥指纹,询问你是否继续连接。这个地方用户决定接受这个远程主机的公钥。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
接下来系统会返回一个提示,表示矩池云服务器得到了访问认可。
Warning: Permanently added '[hz.matpool.com]:29722' (ECDSA) to the list of known hosts.
然后会要求输入密码,因为终端输入密码是不可见的,所以只需要输入对的密码然后回车即可。
root@hz.matpool.com's password:
(myconda) root@c08f65cadb21:~#
当远程服务器的公钥被接受以后,它就会被保存在known_hosts文件之中。下次再连接该机器,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
C:\Users\$HOME\.ssh\known_hosts
⚠️口令安全须知
很多时候会因为密码的长度太短或者复杂度不够,出现了仅包含数字或字母等弱口令的情况。在网络环境中,弱口令是很容易被破解,一旦被攻击者获取,可用来直接登录系统,读取甚至修改你的代码。
提高安全属性可以通过修改口令、增加口令复杂度,如包含大小写字母、数字和特殊字符等。感兴趣的同学可以延展阅读一下《漏洞科普:你对弱口令重视吗?》。
相对简单的方法是使用随机密码生成一个相对复杂的密码。我这里介绍两个相对比较好用的在线随机密码生成工具1Password与LastPass。
LastPass
密钥登录
密钥(key)是一个非常大的数字,通过加密算法得到。SSH 密钥登录采用的是非对称加密,需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。
其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。
如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。
在Windows10上生成密钥非常简单,只需要下面的命令就可以了,Windows默认的是rsa算法所以不需要更改。
ssh-keygen
下面是一个详细的生成案例,
cd C:\Users\matpool\.ssh
C:\Users\matpool\.ssh>ssh-keygen
Generating public/private rsa key pair.
# 设置密钥的文件名,我这里是matpool
Enter file in which to save the key (C:\Users\matpool/.ssh/id_rsa): matpool
# 输入两遍密码确认
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
# 私钥与公钥的保存地址
Your identification has been saved in matpool.
Your public key has been saved in matpool.pub.
The key fingerprint is:
SHA256:YN9DgwIJu+yE76IIT2lz8G3TfG6C/AVePmDAYWk4rvc matpool@DESKTOP-TAKVTFS
The key's randomart image is:
+---[RSA 3072]----+
| ...oo. |
| .++o. . |
| .. o* . o |
| o ... = o . |
|. =. S + |
| +.+.. = = . |
|. B.oo+.+ = |
|+= o .E..+.. |
|+.o ..o. |
+----[SHA256]-----+
⚠️密钥安全须知:保存好自己的私钥,私钥泄露务必请及时更换,以免造成不必要的损失。
然后用编辑器打开上面得到的公钥(public key),也就是matpool.pub,将他里面的内容复制到矩池云的我的公钥内。
然后租用机器,选择公钥登录即可。
如果是按需租用矩池云,那么可以通过指定本地私钥地址来进行登录。
ssh -i C:\Users\matpool\.ssh\id_rsa -p 22 user@host
详细的案例如下,输入密码后回车即可。
C:\Users\matpool>ssh -i C:\Users\matpool\.ssh\matpool -p 29722 root@hz.matpool.com
Enter passphrase for key 'C:\Users\matpool\.ssh\matpool':
(myconda) root@badde6c8b497:~#
如果是包周包月包年等长期租用的用户可以使用密钥来进行免密登录。
在上面的步骤中,你已经完成了生成密钥和将公钥加到矩池云上,那么想要免密登录的话只需要修改.ssh下面的config文件就可以了。
C:\Users\$HOME\.ssh\config
案例如下:
C:\Users\matpool\.ssh\config
# 写域名或者缩写,然后可以直接ssh matpool
Host matpool
# 矩池云分配的服务器域名
HostName hz.matpool.com
# 矩池云服务器的端口
Port 29722
# 矩池云用户名
User root
# 本地私钥地址
IdentityFile C:\Users\matpool\.ssh\matpool
# 保持客户端与服务端会话在短时间内不会断开,单位是秒
ServerAliveInterval 360
可以直接复制一下的内容到你的config内即可。如果是要多台矩池云一起使用,只需要将Host的名字设置成不一样的,内容也一起更新一下即可。
Host matpool
HostName hz.matpool.com
Port 29722
User root
IdentityFile C:\Users\matpool\.ssh\matpool
ServerAliveInterval 360
这里我直接用了 ssh matpool 来进行访问。
公钥小知识
公钥在服务器上存储在下面的文件内。
cat ~/.ssh/authorized_keys