SSH 概述#
ssh 本质是 Secure Shell ,ssh协议安全,可靠,有效。现在使用量大,普遍。比如我就在用。
SSH 为 [Secure Shell](https://baike.baidu.com/item/Secure Shell) 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
以上来自百度百科 (严谨)
关于 SSH 的使用还是相对比较麻烦的。还是一样的总是忘,忘了查,查了记,记了忘。并且每次都会回到最开始的理解,即我后来即使有了自己的一定理解过后,还是会忘。。。。
SSH 的一些配置记录和方法#
目录#
SSH 在操作系统中的目录形式都表现为有一个 ~/.ssh
的目录。Linux 下目录即为使用者家目录下,Windows 中则为 C:\Users\你的用户名
这个目录下。在这个.ssh 目录中会有一些必要的配置文件之类的一些东西存储在其中。且操作系统有关 SSH 的任何操作和记录都在其中,与其他无关。
文件#
.ssh 目录下的文件主要是这些(至少我的操作系统上用到并产生的文件是这些)
- config
- id_rsa.pub/id_rsa
- know_hosts/know_hosts.old
- authorized_keys
其中 config 是一些配置,是关于多个 ssh 目标时使用 config 来进行区分。 id_rsa 是本机的私有密钥,pub 后缀则是公钥。传输认证时服务器事先存储主机(客户机)的公钥,然后主机传输私钥进行请求,服务器根据存储的公钥进行识别。authorized_keys 作用于服务器,识别标记主机,使得主机在每次请求连接时都不用再输入密码。
其中 id_rsa 可以用 genkey
命令生成。我在Linux中在配置Git时使用了这个,但是锁定的是我的 Git 邮箱账户,而非我的 Linux 系统主机。当时使用的命令为
1 | ssh-keygen -t rsa -C "youremail@example.com" |
使用的便是我的邮箱,后来我又使用了ssh-keygen
直接生成了主机名字的 id_rsa.pub/id_rsa 的密钥对。
config#
config 的具体配置如下。一般情况下要将 git 的 User 设置为 git 或者干脆不设置,才可以正常运行,我试过将 User 改为我的 github,gitee 帐号对应的用户后无法正常工作。貌似也确实是这样,估计是我的用户名其实相当于是github下的一个路径而已。因为就github和gitee的提示而言,他们都是git@github.com/username/project.git 的路径。所以类比于 User@HostName ,这里也应该是填写 git。目前还是一种自己的猜测。
如果连这个 config 都不进行设置的话,在使用 ssh 的时候将会出现permission denied (Publickey) 的报错。
1 | Host github.com |
可以使用ssh -vT github.com/gitee.com
或者ssh github.com/gitee.com
来进行验证。以下是直接使用ssh进行测试连接的。其中的第一行PTY allocation request failed on channel 0暂时还不清楚。有待后续研究试错。
1 | $> ssh git@github.com |
其中具体参数的讲解可以看看库这个某乎的链接 。
其中上面的Host 类似于是一个别名,Host 相当于是 User@HostName。例如这里面 Host 的gitee.com 就相当于是 git@gitee.com 。假如是一个远程主机的话就可以写用户名@主机名了。比如我的虚拟机的用户名,和我虚拟机的主机名,填写上去是可以正常运行的。