Linux ssh免密登录,在windows上连接远程服务器
一、前言
昨天手贱把.ssh目录下的文件删了,导致无法实现ssh免密登录,仅俩个月没碰Linux,一些基本的命令就忘了,包括ssh。所以写篇博客详细记录一下ssh免密登录的配置流程,包括在windows上连接Linux。同时希望我总结的经验教训能帮助更多的新手。
二、Linux实现免密登录
1)各项信息
三台Centos6.1主机,域名映射分别为:namenode、datanode1、datanode2,都装有ssh
域名映射可有可无,只是一种替代ip的方式
vim /etc/selinux/config
设置SELINUX=disabled
service iptables stop
关闭防火墙chkconfig iptables off
关闭开机自启
查看是否已关闭:chkconfig | grep iptables
2)明确目标
实现三台互相都能免密登录。
3)操作流程
1、修改三台主机ssh配置文件(以namenode为例)
vim /etc/ssh/ssh_config
line50:添加StrictHostChecking no
,关闭严格主机**检查
2、设置三台主机ssh**(以namenode为例)
ssh-******
三次回车后,进入/root/.ssh/发现两个**,一个是私钥id_rsa(务必保管好
),一个是公钥id_rsa.pub(可以分发给别的主机
)
因为是三台主机,为了避免混淆,可以复制一个带有主机标识的公钥:cp id_rsa.pub id_rsa.pub.namenode
另外两台重复这个操作,最终结果:
4、发送公钥
把datanode1和datanode2的公钥发送给namenode:scp id_rsa.pub.datanode1 [email protected]:/root/.ssh
,输入namenode的密码
如果没有域名映射,namenode要换成ip地址
在namenode上查看是否发送成功,如果成功,将三个公钥都写入**文件
cat id_rsa.pub.namenode id_rsa.pub.datanode1 id_rsa.pub.datanode2 >> authorized_keys
将**分发给另外两台主机scp authorized_keys [email protected]:/root/.ssh/
scp authorized_keys [email protected]:/root/.ssh/
大功告成!
5、验证
验证免密登录,namenode登录datanode1:ssh [email protected]
可以看到,一来一回都不用输入密码,目标达成!
免密传送文件:
三、在windows上连接远程服务器
可能有的朋友觉得上面的图片有些奇怪,这个终端怎么是Linux的命令行,cmd的窗口???
因为我在cmd命令行上连接了Linux,从而可以远程控制这台机器。
这么有逼格的?怎么实现的?
看完上面的免密登录,我不说,你应该也能操作出来。
还是一样的操作生成**,发送**,以实现互联。
1、安装
一般win1809以上的版本有装有ssh,在命令行输入ssh看一下,如果没有则需要下载,最简单的安装方法:
win+i打开设置,找到应用->应用和功能->可选功能->添加功能,安装OpenSSH客户端和OpenSSH服务器。
安装成功后
2、设置**
ssh-******
默认在用户目录下的.ssh里会生成一对**
为了避免混淆,先复制一个带有主机名的公钥:copy id_rsa.pub id_rsa.pub.windows
3、发送**
如何把这个公钥发送给远程服务器呢?有一个简单的方法,windows安装WinSCP,这是一个免费开源的以SFTP协议为基础的传输神器
官网链接https://winscp.net/eng/download.php
网盘链接:https://pan.baidu.com/s/1lxPFuHG3KTdJMjdXhs6TOg 提取码:3u9b
新建会话,没有在windows上做域名映射的朋友,主机名填ip地址
登录后,左边是本地目录,右边是远程目录,找到对应的文件和目录后,直接拖到右边
将新来的公钥加入**文件:cat id_rsa.pub.windows >> authorized_keys
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文件
连接成功!
我是在内网环境下实验的,如果是生产环境,要去掉之前加上去的StrictHostKeyChecking no,以提高安全性。
四、结语
我是一个爱折腾的人,其实爱折腾也没什么不好,就比如这次瞎折腾把ssh目录删了,趁此机会又复习了一大堆知识,不然Linux都快忘干净了。相反,一些“谨慎”“畏手畏脚”的人,连试一试的勇气都没有,怕搞坏这个怕搞坏那个,老是依赖别人,不亲自动手实践,就是故步自封,永远也不会进步。
如有错误,欢迎私信纠正!
技术永无止境,谢谢支持!