pezayo's Blog

蓦然回首,那人却在灯火阑珊处

0%

对于ssh的一些记录。。

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-UXLinuxAIXSolaris、Digital UNIXIrix,以及其他平台,都可运行SSH。

以上来自百度百科 (严谨)

关于 SSH 的使用还是相对比较麻烦的。还是一样的总是忘,忘了查,查了记,记了忘。并且每次都会回到最开始的理解,即我后来即使有了自己的一定理解过后,还是会忘。。。。

SSH 的一些配置记录和方法#

目录#

SSH 在操作系统中的目录形式都表现为有一个 ~/.ssh 的目录。Linux 下目录即为使用者家目录下,Windows 中则为 C:\Users\你的用户名 这个目录下。在这个.ssh 目录中会有一些必要的配置文件之类的一些东西存储在其中。且操作系统有关 SSH 的任何操作和记录都在其中,与其他无关。

文件#

.ssh 目录下的文件主要是这些(至少我的操作系统上用到并产生的文件是这些)

  1. config
  2. id_rsa.pub/id_rsa
  3. know_hosts/know_hosts.old
  4. 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
2
3
4
5
6
7
8
9
10
11
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee

可以使用ssh -vT github.com/gitee.com 或者ssh github.com/gitee.com 来进行验证。以下是直接使用ssh进行测试连接的。其中的第一行PTY allocation request failed on channel 0暂时还不清楚。有待后续研究试错。

1
2
3
4
5
6
7
8
$> ssh git@github.com
PTY allocation request failed on channel 0
Hi xxx(你的用户名)! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
$> ssh github.com
PTY allocation request failed on channel 0
Hi xxx(你的用户名)! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

其中具体参数的讲解可以看看库这个某乎的链接

其中上面的Host 类似于是一个别名,Host 相当于是 User@HostName。例如这里面 Host 的gitee.com 就相当于是 git@gitee.com 。假如是一个远程主机的话就可以写用户名@主机名了。比如我的虚拟机的用户名,和我虚拟机的主机名,填写上去是可以正常运行的。

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道