Linux ssh免密登录,在windows上连接远程服务器

一、前言

昨天手贱把.ssh目录下的文件删了,导致无法实现ssh免密登录,仅俩个月没碰Linux,一些基本的命令就忘了,包括ssh。所以写篇博客详细记录一下ssh免密登录的配置流程,包括在windows上连接Linux。同时希望我总结的经验教训能帮助更多的新手。

二、Linux实现免密登录

1)各项信息

三台Centos6.1主机,域名映射分别为:namenode、datanode1、datanode2,都装有ssh

Linux ssh免密登录,在windows上连接远程服务器
域名映射可有可无,只是一种替代ip的方式

vim /etc/selinux/config 设置SELINUX=disabled

Linux ssh免密登录,在windows上连接远程服务器
service iptables stop关闭防火墙
chkconfig iptables off关闭开机自启
查看是否已关闭:chkconfig | grep iptables

Linux ssh免密登录,在windows上连接远程服务器

2)明确目标

实现三台互相都能免密登录。

3)操作流程

1、修改三台主机ssh配置文件(以namenode为例)

vim /etc/ssh/ssh_config

line50:添加StrictHostChecking no,关闭严格主机**检查

Linux ssh免密登录,在windows上连接远程服务器

2、设置三台主机ssh**(以namenode为例)

ssh-******三次回车后,进入/root/.ssh/发现两个**,一个是私钥id_rsa(务必保管好),一个是公钥id_rsa.pub(可以分发给别的主机

因为是三台主机,为了避免混淆,可以复制一个带有主机标识的公钥:cp id_rsa.pub id_rsa.pub.namenode

Linux ssh免密登录,在windows上连接远程服务器
另外两台重复这个操作,最终结果:

Linux ssh免密登录,在windows上连接远程服务器

4、发送公钥

把datanode1和datanode2的公钥发送给namenode:scp id_rsa.pub.datanode1 [email protected]:/root/.ssh,输入namenode的密码

如果没有域名映射,namenode要换成ip地址

Linux ssh免密登录,在windows上连接远程服务器
在namenode上查看是否发送成功,如果成功,将三个公钥都写入**文件

cat id_rsa.pub.namenode id_rsa.pub.datanode1 id_rsa.pub.datanode2 >> authorized_keys

Linux ssh免密登录,在windows上连接远程服务器
将**分发给另外两台主机
scp authorized_keys [email protected]:/root/.ssh/
scp authorized_keys [email protected]:/root/.ssh/

大功告成!

5、验证

验证免密登录,namenode登录datanode1:ssh [email protected]

Linux ssh免密登录,在windows上连接远程服务器
可以看到,一来一回都不用输入密码,目标达成!

免密传送文件:

Linux ssh免密登录,在windows上连接远程服务器

三、在windows上连接远程服务器

可能有的朋友觉得上面的图片有些奇怪,这个终端怎么是Linux的命令行,cmd的窗口???

因为我在cmd命令行上连接了Linux,从而可以远程控制这台机器。

这么有逼格的?怎么实现的?

看完上面的免密登录,我不说,你应该也能操作出来。

还是一样的操作生成**,发送**,以实现互联。

1、安装

一般win1809以上的版本有装有ssh,在命令行输入ssh看一下,如果没有则需要下载,最简单的安装方法:

win+i打开设置,找到应用->应用和功能->可选功能->添加功能,安装OpenSSH客户端和OpenSSH服务器。

安装成功后

Linux ssh免密登录,在windows上连接远程服务器

2、设置**

ssh-******

Linux ssh免密登录,在windows上连接远程服务器
默认在用户目录下的.ssh里会生成一对**

Linux ssh免密登录,在windows上连接远程服务器
为了避免混淆,先复制一个带有主机名的公钥:copy id_rsa.pub id_rsa.pub.windows

Linux ssh免密登录,在windows上连接远程服务器

3、发送**

如何把这个公钥发送给远程服务器呢?有一个简单的方法,windows安装WinSCP,这是一个免费开源的以SFTP协议为基础的传输神器
官网链接https://winscp.net/eng/download.php
网盘链接:https://pan.baidu.com/s/1lxPFuHG3KTdJMjdXhs6TOg 提取码:3u9b

新建会话,没有在windows上做域名映射的朋友,主机名填ip地址

Linux ssh免密登录,在windows上连接远程服务器
登录后,左边是本地目录,右边是远程目录,找到对应的文件和目录后,直接拖到右边

Linux ssh免密登录,在windows上连接远程服务器
将新来的公钥加入**文件:cat id_rsa.pub.windows >> authorized_keys

Linux ssh免密登录,在windows上连接远程服务器
18368是我的用户名,Pineapple是我的主机名。

好了,下面又是熟悉的操作,将authorized_keys文件发给所有要互联的主机
scp authorized_keys [email protected]:/root/.ssh/
scp authorized_keys [email protected]:/root/.ssh/
用WinSCP发送给windows

大功告成!

4、验证

在cmd中输入ssh [email protected]没有在windows上做域名映射的,@后接ip地址

输入yes,将主机信息加入know hosts文件

Linux ssh免密登录,在windows上连接远程服务器
连接成功!

我是在内网环境下实验的,如果是生产环境,要去掉之前加上去的StrictHostKeyChecking no,以提高安全性。
Linux ssh免密登录,在windows上连接远程服务器

四、结语

我是一个爱折腾的人,其实爱折腾也没什么不好,就比如这次瞎折腾把ssh目录删了,趁此机会又复习了一大堆知识,不然Linux都快忘干净了。相反,一些“谨慎”“畏手畏脚”的人,连试一试的勇气都没有,怕搞坏这个怕搞坏那个,老是依赖别人,不亲自动手实践,就是故步自封,永远也不会进步。

如有错误,欢迎私信纠正!
技术永无止境,谢谢支持!