这里是普通文章模块栏目内容页
Centos的SSH连接方式

背景
在测试vscode远程调试linux服务器的时候,需要进行ssh连接,所以了解了一下ssh连接的一些方式和配置。
我测试的环境就是客户端Win7,服务器使用的是centos7.5。

linux中已经不再使用telnet进行管理了,原因是传输的内容是都明文传输。
linux中ssh通信可以有两种方式:1:帐号密码;2:密钥。
这里就不讨论帐号密码,毕竟默认就是通过帐号密码登录的。而且不用关闭Selinux。
Win7中并没有什么SSH客户端工具。所以装个git,同时git也和vs有个搭配。
踩过的坑
研究了一天,估计就是我虚拟机有问题。一直提示密钥不匹配(报错提示:public-key authentication with the server for user kernel failed. please verify username and public/private key pair.)。
经过一天又一夜的研究,最后靠一位大神发现了问题。只要关闭了selinux就可以了。
/etc/selinux/config按照里面的要求改成SELINUX=disabled即可。
实施步骤
安装完git就可以使用ssh客户端功能了(默认会配置好win的系统变量)。生成密钥命令ssh-keygen -t rsa -b 4096(默认是2048);只要装完ssh就可以通过该命令生成密钥对。
在客户端生成,我使用的是SecCRT工具(生成的途中在格式选项中选new就行):

直接在Linux服务器上生成密钥,在服务器上输入命令ssh-keygan -t rsa,第一个是保存的位置(位置最好就直接放在.ssh里面,到时候去sshd配置改一下就行了。),之后就是私钥的密码。和工具生成的一样,可以填或者不填。文件带.pub后缀的就是公钥了。另外一个就是私钥。


Win7装完git,有了ssh客户端之后,直接cmd下输入命令ssh-keygan -t rsa就会提示文件的保存了:一般在C:\Users\用户名\.ssh,id_rsa.pub就是公钥,没有pub就是私钥。都是可以自己设置的。
公钥放到linux服务器的/root/.ssh/xxx.pub里面(名字随意,只要sshd配置AuthorizedKeysFile .ssh/authorized_keys中的authorized_keys改成.ssh目录里面的公钥名字一样就行。),其次,公钥和私钥都要在客户端(我的win系统),不然登录的时候会报没有私钥错误。简单说:服务器只要公钥,客户端公钥私钥都必须要有。
服务器上的sshd_config也就是ssh的服务端配置文件要开启的参数:PubkeyAuthentication yes、AuthorizedKeysFile .ssh/authorized_keys(这里改为公钥就行,文件都是在.ssh目录里面就行)。
vscode的ssh配置(会保存在用户的文件夹里面C:\Users\你的用户名\.ssh)在同目录下生成一个config的文件,在vscode里面配置和在文件目录下配置都是一样的。配置如下:

复制id_rsa.pub文件(公钥)内容到linux下~/.ssh/authorized_keys(不一定要authorized_keys这个文件名,文件名称随意,只要是公钥就行),如果目录没有这个文件请创建。~就是linux的家目录;注意看提示符,如下:

[root@Kernel ~]# pwd
/root
[root@Kernel ~]# 

这里说一下.ssh的公钥文件,文件格式很简单,可以容纳无数个公钥,也就是可以对接很多个私钥认证。格式就是每一行保持独立的公钥内容就行。
完整的一行公钥是:ssh标识 公钥内容 帐号注释;三个内容,如图:

服务器Linux的文件权限修改一个是文件,一个是目录:chmod 600 ~/.ssh/authorized_keys , chmod 700 -R ~/.ssh/(经过测试,一般不需要更改权限)。

客户端(SecCRT)就可以使用密钥对进行登录了。

在这里插入图片描述
最后放一张登录的图: