1.ssh 远程 报错 解决方案 centos 无法远程
SSH概念:
安全网络协议,开源实现、商业实现。 连接的客户端:putty、SecureCRT、XShell 守护进程sshd,监听端口号:22 两个验证:主机验证:需要输入server的IP;用户验证:需要输入用户名密码 验证机制:密码验证机制、公钥认证机制 验证机制:基于口令的安全验证、基于秘钥的安全验证
非对称加密: 通过公钥、私钥进行加密、解密。不论是公钥加密或者私钥加密的数据,都能用对应的私钥或者公钥解密 公钥放服务器端、私钥放本机 SSH安全机制验证过程: 1.创建一个密钥对,id_rsa(私钥)、id_rsa.pub(公钥),公钥放到服务器(目标机)上 2.将公钥的内容追加到目标机的授权文件中
关于ssh 修改如下检查自己centos里面的ssh配置文档:
如果有没开的按续需求开启,没找的某行把我这个中的某行直接粘进去。 后面注释很详细了
以centos7为例子
vim /etc/ssh/sshd_config
PermitRootLogin yes #允许root用户远程登录
PubkeyAuthentication yes #密钥登录
PasswordAuthentication yes #密码登录
UsePAM yes #用户登录验证体系,不要关,不然虚拟机主机和远程都登不上去
# AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #端口转发,不要关,不然会网卡,xshell偶尔连不上网
# X11DisplayOffset 10
# x11UseLocalhost yes #如果默认是no也不用修改,跟安装的服务有关
#PermitTTY yes
# PrintMotd yes
#交互式登录时打印
UseLogin no
# 禁止用户登录检查
UseDNS no
# 禁止用户DNs检查
如果你的默认是yes 然后,用xshell秒连接那么就不用改为no,如果往往在等待很久(超过五秒就是高延迟,三秒为延迟)后才能连接上..将#UseLogin yes改为UseLogin no或#UseDNS yes 改为UseDNS no
##x11UseLocalhost yes #仅本地用户主机转发,如果你需要在远程主机上显示GUI,你应该确保X11UseLocalhost设置为no。如果你不想让远程主机能够显示GUI,你应该将其设置为yes。
#警告: Red Hat Enterprise Linux 不支持 'UsePAM no',可能会导致多个问题 sshd_config配置文件错误导致ssh无法正常登录,要改为yes
#PrintMotd指定 sshd 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"yes"。
#使用Xshell工具登录Linux时,常常会跳出如下界面 Connection established. To escape to local shell, press 'Ctrl+Alt+]'. 往往在等待很久后才能连接上..将#UseLogin yes改为UseLogin no(注意去掉前面的#)
出现To escape to local shell, press ‘Ctrl+Alt+J’.然后登了很久才登上 同理 修改UseDNS yes为UseDNS no,并去掉前面的#。
如果两秒内登录就不用改了,其余就。。
2.SSH无密码登录 的概念总结 免密登录
注意:再配免密登录前一定要确认
ssh 连接对面成功
ping 对面IP可以ping通
先切换到管理员用户
su - root
[root@master ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes # 密钥登录
不开 无法生成密钥对
SSH:安全网络协议,开源实现、商业实现。 连接的客户端:putty、SecureCRT、XShell 守护进程sshd,监听端口号:22 两个验证:主机验证:需要输入server的IP;用户验证:需要输入用户名密码 验证机制:密码验证机制、公钥认证机制 验证机制:基于口令的安全验证、基于秘钥的安全验证 非对称加密: 通过公钥、私钥进行加密、解密。不论是公钥加密或者私钥加密的数据,都能用对应的私钥或者公钥解密 公钥放服务器端、私钥放本机 SSH安全机制验证过程: 1.创建一个密钥对,id_rsa(私钥)、id_rsa.pub(公钥),公钥放到服务器(目标机)上 2.将公钥的内容追加到目标机的授权文件中
举例:
1 实验环境Hadoop集群
集群配置免密登录
(master到slaver1、slaver2;slaver1、slaver2到master)
前提:前期准备
前提:前期准备
3个节点: master: slaver1: slaver2:配置服务器的IP地址 查看机器的网卡名称。 ip address show。配置静态IP,三台均配
(2)设置服务器的主机名称) 设置主机名称 (以master为例子另外两台也要修改主机名)
hostnamectl set-hostname master :修改以后永久生效
hostname master1 :临时修改
查看当前服务器的名称。
hostname
(3)绑定主机名与IP地址 (以master为例子另外两台也要修改主机IP) 编辑本地名字解析文件hosts。vi /etc/hosts
在其中增加相应内容(下面的内容表示主机名master对应的IP地址为192.168.xxx.xxx):192.168.229.133 master
192.168.229.134 slaver1
192.168.229.135 slaver2
(4)查看SSH服务状态CentOS 7默认安装SSH服务,查看SSH的状态。
systemctl status sshd
关闭防火墙
关闭命令:
systemctl stop firewalld
systemctl disable firewalld
查看防火墙的状态
systemctl status firewalld
关闭内核防火墙
vim /etc/selinux/config
SELINUX=disabled
集群配置免密登录
(master到slaver1、slaver2;slaver1、slaver2到master)前提:有3个节点,每个节点主机名修改好、主机名和IP映射都配置好、已配置(主机名、IP地址和主机名映射、两个防火墙关闭)
配置本主机免密登录步骤:
1.大纲,总体思路
在本主机使用ssh-keygen -t rsa -P ''生成密钥对 .将id_rsa.pub的内容追加本机的授权文件authorized_key中
配置master到slaver1、slaver2免密登录:
1.在3个节点上都使用ssh-keygen -t rsa -P ''生成密钥对
2.将master的公钥id_rsa.pub的内容追加slaver1的授权文件authorized_key中
配置slaver1、slaver2到master免密登录
1.在3个节点上都使用ssh-keygen -t rsa -P ''生成密钥对
ssh-keygen -t rsa -P ''
ssh-keygen -t rsa -P ''
ssh-keygen -t rsa -P ''
2.将slaver2的公钥id_rsa.pub的内容追加master的授权文件authorized_key中
cd ~/.ssh/ = cd /root/.ssh/
ls
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#slave1
[hadoop@slave1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@slave1 .ssh]$ ls ~/.ssh/
#slave2
[hadoop@slave2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@slave2 .ssh]$ ls ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
修改 SSH 配置文件"/etc/ssh/sshd_conchmod 600 ~/.ssh/authorized_keysfig"的下列内容
#master
[hadoop@master .ssh]$ su - root
[root@master ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
#slave1
[hadoop@slave1 .ssh]$ su - root
[root@slave1 ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
#slave2
[hadoop@slave2 .ssh]$ su - root
[root@slave2 ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
设置完后需要重启 SSH 服务,才能使配置生效。
systemctl restart sshd
systemctl restart sshd
systemctl restart sshd
拷贝并追加密钥 ,删除原生的元密钥
master
scp ~/.ssh/id_rsa.pub master@slave1:~/
scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
cat ~/id_rsa.pub >>~/.ssh/authorized_keys
slave1
scp ~/.ssh/id_rsa.pub slave1@master:~/
scp ~/.ssh/id_rsa.pub slave1@slave2:~/
cat ~/id_rsa.pub >>~/.sh/authorized_keys
slave2
scp ~/.ssh/id_rsa.pub slave2@slave1:~/
scp ~/.ssh/id_rsa.pub slave2@master:~/
cat ~/id_rsa.pub >>~/.ssh/authorized_keys
rm -f ~/id_rsa.pub
rm -f ~/id_rsa.pub
rm -f ~/id_rsa.pub
看 查看 3个 节点 authorized_keys 文件
cat ~/.ssh/authorized_keys
举例2:简单的方法:
思路: 公钥放服务器端、私钥放本机
s1生成密钥对,追加给授权文件,把授权文件 拷贝到给s2 然后s1用putty或xshell 等可以通过s1 跳转登录s2了
拓展:
windows 上的putty 生成密钥对,追加给授权文件,把授权文件 拷贝到给s2 然后用putty或xshell 等就可以通过密钥 登录s2 了 原理差不多
当然,这是在我们自己电脑上的实验环境
如果是公司,
则 :1.创建一个密钥对,id_rsa(私钥)、id_rsa.pub(公钥),公钥放到服务器(目标机)上 2.将公钥的内容追加到目标机的授权文件中 再通过自己电脑的私钥密钥登录
找到先切换到管理员或 sudo用户,开启允许使用密钥登录权限
su - root
[root@master ~]# sudo vim /etc/ssh/sshd_config
PubkeyAuthentication yes
cd /root/.ssh/
1.( 我常用的这个)知道服务器密码的情况
# 免密码登录被控的主机(ip是被控的,之后输入yes,还会让你输入被控的密码)
一定要修改hosts,三个均改,
若四台则四台每个都改且 每个/etc/hosts 中添加四个IP主机名
vim /etc/hosts 钉死DNS解析
192.168.98.145 root
192.168.98.144 slave
192.168.98.143 slave2
切换目录,在下面生成一个密钥对方便后期用
cd /root/.ssh/
ssh-keygen -t rsa
#上面的命令后三次回车
注意:
cd /root/.ssh/
ls # 查看一下,在/root/.ssh/ 里面只是保留authorized_keys id_rsa id_rsa.pub两个文件其余删完否则会配失败
rm -rf known_hosts
#然后把想要免密登录的服务器加进来(三台机器,主机免密登录另外两台)
ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub root@slave12
# 配置完成,开始测试如下
[root@root opt]# ssh slave1
Last login: Fri Jul 26 08:50:46 2024 from 192.168.98.1
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@root opt]# ssh slave2
Last login: Fri Jul 26 08:50:47 2024 from 192.168.98.1
[root@slave2 ~]# exit
登出
Connection to slave2 closed.
[root@root opt]#
2.不知道服务器密码的情况
cd /root/.ssh/
# 例子:pub能免密登录pri(就是pri是被控的主机)
ssh-keygen -t rsa(两台都操作)
#上面的命令后三次回车
# pub中
cd /root/.ssh/
#(复制id_rsa.pub里的
Pri中
cd /root/.ssh/
vim authorized_keys # 这个文件是自己写的,内容是pub的id_rsa.pub里的
# 在pub执行下面的
ssh-copy-id -i /root/.ssh/id_rsa.pub root@pri的ip
# 输入yes就可以了
# 如果不是22端口,就在后面加上 (-p 端口)
ssh-copy-id -i /root/.ssh/id_rsa.pub root@pri的ip -p 端口