ssh_exchange_identification: Connection closed by remote host
[ 2009/11/02 00:03 | by selboo ]
ssh_exchange_identification: Connection closed by remote host
解决办法:
/etc/hosts.deny
修改/etc/hosts.allow文件,加入 sshd:ALL,然后重启sshd服务
解决办法:
/etc/hosts.deny
修改/etc/hosts.allow文件,加入 sshd:ALL,然后重启sshd服务
Are you sure you want to continue connecting (yes/no)?
[ 2009/08/31 12:04 | by selboo ]
The authenticity of host '64.71.167.20 (64.71.167.20)' can't be established.
RSA key fingerprint is bf:fd:e4:52:fe:25:9c:72:f5:1f:49:77:cf:3b:85:79.
Are you sure you want to continue connecting (yes/no)?
ssh 连接时经常能碰到如上信息,如果一两台还可以手动输入,如果多了就麻烦下
可以使用 -oStrictHostKeyChecking=no 参数进行过滤
ssh -oStrictHostKeyChecking=no 64.61.167.20
也可以使用 expect 命令模拟键盘输入"yes"
RSA key fingerprint is bf:fd:e4:52:fe:25:9c:72:f5:1f:49:77:cf:3b:85:79.
Are you sure you want to continue connecting (yes/no)?
ssh 连接时经常能碰到如上信息,如果一两台还可以手动输入,如果多了就麻烦下
可以使用 -oStrictHostKeyChecking=no 参数进行过滤
ssh -oStrictHostKeyChecking=no 64.61.167.20
也可以使用 expect 命令模拟键盘输入"yes"
ssh只允许指定的用户登陆
[ 2009/05/12 13:59 | by selboo ]
如何让ssh只允许指定的用户登录
方法1:在/etc/pam.d/sshd文件第一行加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers
onerr=fail
然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
方法2:pam规则也可以写成deny的
auth required pam_listfile.so item=user sense=deny file=/etc/sshusers
onerr=succeed
方法3:在sshd_config中设置AllowUsers,格式如
AllowUsers a b c
重启sshd服务,则只有a/b/c3个用户可以登陆
方法1:在/etc/pam.d/sshd文件第一行加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers
onerr=fail
然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
方法2:pam规则也可以写成deny的
auth required pam_listfile.so item=user sense=deny file=/etc/sshusers
onerr=succeed
方法3:在sshd_config中设置AllowUsers,格式如
AllowUsers a b c
重启sshd服务,则只有a/b/c3个用户可以登陆
使用iptables防止ssh暴力猜解
[ 2009/04/20 16:23 | by selboo ]
基于端口,使用iptables的connlimit模块
iptables -I INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT
一条指令即可以搞掂, –connlimit-above 2表示只允许一个客户开启二个会话,与sshd_config 设置的区别,sshd_config只能设定一个用户最多尝试几次密码
同样也可以设定web服务访问设限
iptables -I INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 30 -j REJECT
这样即可
用putty测试,开启到第三字,显示网络不可用,如下图
iptables -I INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 2 -j REJECT
一条指令即可以搞掂, –connlimit-above 2表示只允许一个客户开启二个会话,与sshd_config 设置的区别,sshd_config只能设定一个用户最多尝试几次密码
同样也可以设定web服务访问设限
iptables -I INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 30 -j REJECT
这样即可
用putty测试,开启到第三字,显示网络不可用,如下图
一般在企业应用中,如果要远程连接到服务器,一般的做法都是先VPN连接到客户内网,然后再SSH到远程服务器,这样数据远程传输不仅有VPN的保护,还有SSH的保护,使数据传输更加安全。我们这里着重阐述SSH的认证配置。
SSH的认证不仅可以通过口令,还可以通过证书,当然还可以使用证书和口令相结合的认证方式,下面我将分别阐述各种认证的配置方法:
1.通过口令认证
第一步:安装相关软件包
使用命令 rpm -qa | grep openssh查看是否安装相关软件包。
[root@server ~]# rpm -qa | grep openssh
openssh-server-4.3p2-16.el5
openssh-4.3p2-16.el5
openssh-clients-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5
如果没有,则安装以上软件包,当然也可以下载源码包,进行编译安装,具体方法这里就不多说了,不清楚的自加google一下。
第二步:配置SSH
#服务器端配置 /etc/ssh/sshd_config
#只考虑协议版本2
/usr/local/etc/ssh/sshd_config
#全局配置
VersionAddendum TecZm-20050505 #在telnet ip 22时只能看出openssh的版本,看不出OS
Protocol 2 #使用协议版本2
Port 22 #sshd监听22端口
ListenAddress 192.168.7.1 #sshd只监听目标ip为192.168.7.1的请求
AllowGroups wheel myguest #允许wheel组和myguest组的用户登录
AllowUsers teczm authen@192.168.8.5 #允许来自以上组的teczm用户和authen用户登录,
#且authen用户只能从主机192.168.8.5登录
#DenyGroups #拒绝登录的组,参数设置和AllowGroups一样
#DenyUsers #拒绝登录的用户,参数设置和AllowUsers一样
#AllowTcpForwarding yes #是否转发的TCP包都被允许。默认是 ``yes''。
LoginGraceTime 60 #60秒内客户端不能登录即登录超时,sshd切断连接。
KeyRegenerationInterval 1800 #1800秒(30分钟)后自动重新生成服务器的密匙。
MaxStartups 3 #设置同时发生的未验证的并发量,即同时可以有几个
UseDNS no #不使用DNS查询客户端。
PermitRootLogin no #不允许root登录,root可由wheel组用户登录后su。
X11Forwarding no #禁止用户运行远程主机上的X程序。
UseLogin yes #禁止X11Forwarding
#认证配置(口令认证、PAM认证、非对称密钥认证任选其一)
#口令认证
PubkeyAuthentication no #不使用非对称密钥认证
PasswordAuthentication yes #使用口令认证
PermitEmptyPasswords no #不允许使用空密码的用户登录
#PAM认证
PasswordAuthentication no #不使用口令认证
UsePAM #使用pam认证
ChallengeResponseAuthentication yes #允许挑战应答方式
#非对称密钥认证
PasswordAuthentication no #不使用口令认证
PubkeyAuthentication yes #使用非对称密钥认证
AuthorizedKeysFile .ssh/authorized_keys #用户认证使用的公钥
一般情况下,默认的SSH配置文件就可以满足口令认证需要。
第三步:开启SSH服务
使用命令开启当前的SSH服务:/etc/init.d/sshd start
使用命令使其开机自动运行:chkconfig sshd on
2.通过证书认证
在以上配置的基础上,为了使认证过程更加安全,还可以使用非对称密钥加密证书技术,步骤和说明如下:
第一步:生成非对称密钥
[root@server ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):#私钥存储目录
Enter passphrase (empty for no passphrase):password#私钥的认证密码
Enter same passphrase again:password#确认私钥的认证密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
19:49:2d:57:4d:a6:43:9b:23:f5:75:bd:db:9c:8a:21 root@server.redhat.com
第二步:拷贝公钥到服务器
[root@server ~]# ssh-copy-id root@192.168.20.26
The authenticity of host '192.168.20.26 (192.168.20.26)' can't be established.
RSA key fingerprint is 4c:73:36:e0:21:6d:0c:08:16:66:14:a1:30:26:cb:08.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.20.26' (RSA) to the list of known hosts.
root@192.168.20.26's password:sys_password#系统密码
Now try logging into the machine, with "ssh 'root@192.168.20.26'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@server ~]#
第三步:测试非对称认证
[root@server ~]# ssh 192.168.20.26
Enter passphrase for key '/root/.ssh/id_rsa':password#私钥的认证密码
Last login: Tue Jul 22 09:22:40 2008 from 192.168.20.26
[root@server ~]#
3.证书和口令结合认证
在第二种方法中,如果默认非对称密钥的口令为空,则是只通过证书认证,如果设置了非对称密钥口令,则是证书和口令结合认证,当然这里的口令不是系统口令,是嵌套在密钥中的另外一个口令,可以起到双重保护的作用。
补充:在应用ssh证书认证的过程中,还有两个命令可以应用,
ssh-agent bash #在bash环境下启用ssh代理服务
ssh-add #将ssh密钥添加到内存中
这两个命令结合使用的作用就是避免每次通过SSH登录服务器时重复输入口令,当然这种也会造成一些不安全的因素,所以一般不使用。
本文出自 51CTO.COM技术博客
SSH的认证不仅可以通过口令,还可以通过证书,当然还可以使用证书和口令相结合的认证方式,下面我将分别阐述各种认证的配置方法:
1.通过口令认证
第一步:安装相关软件包
使用命令 rpm -qa | grep openssh查看是否安装相关软件包。
[root@server ~]# rpm -qa | grep openssh
openssh-server-4.3p2-16.el5
openssh-4.3p2-16.el5
openssh-clients-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5
如果没有,则安装以上软件包,当然也可以下载源码包,进行编译安装,具体方法这里就不多说了,不清楚的自加google一下。
第二步:配置SSH
#服务器端配置 /etc/ssh/sshd_config
#只考虑协议版本2
/usr/local/etc/ssh/sshd_config
#全局配置
VersionAddendum TecZm-20050505 #在telnet ip 22时只能看出openssh的版本,看不出OS
Protocol 2 #使用协议版本2
Port 22 #sshd监听22端口
ListenAddress 192.168.7.1 #sshd只监听目标ip为192.168.7.1的请求
AllowGroups wheel myguest #允许wheel组和myguest组的用户登录
AllowUsers teczm authen@192.168.8.5 #允许来自以上组的teczm用户和authen用户登录,
#且authen用户只能从主机192.168.8.5登录
#DenyGroups #拒绝登录的组,参数设置和AllowGroups一样
#DenyUsers #拒绝登录的用户,参数设置和AllowUsers一样
#AllowTcpForwarding yes #是否转发的TCP包都被允许。默认是 ``yes''。
LoginGraceTime 60 #60秒内客户端不能登录即登录超时,sshd切断连接。
KeyRegenerationInterval 1800 #1800秒(30分钟)后自动重新生成服务器的密匙。
MaxStartups 3 #设置同时发生的未验证的并发量,即同时可以有几个
UseDNS no #不使用DNS查询客户端。
PermitRootLogin no #不允许root登录,root可由wheel组用户登录后su。
X11Forwarding no #禁止用户运行远程主机上的X程序。
UseLogin yes #禁止X11Forwarding
#认证配置(口令认证、PAM认证、非对称密钥认证任选其一)
#口令认证
PubkeyAuthentication no #不使用非对称密钥认证
PasswordAuthentication yes #使用口令认证
PermitEmptyPasswords no #不允许使用空密码的用户登录
#PAM认证
PasswordAuthentication no #不使用口令认证
UsePAM #使用pam认证
ChallengeResponseAuthentication yes #允许挑战应答方式
#非对称密钥认证
PasswordAuthentication no #不使用口令认证
PubkeyAuthentication yes #使用非对称密钥认证
AuthorizedKeysFile .ssh/authorized_keys #用户认证使用的公钥
一般情况下,默认的SSH配置文件就可以满足口令认证需要。
第三步:开启SSH服务
使用命令开启当前的SSH服务:/etc/init.d/sshd start
使用命令使其开机自动运行:chkconfig sshd on
2.通过证书认证
在以上配置的基础上,为了使认证过程更加安全,还可以使用非对称密钥加密证书技术,步骤和说明如下:
第一步:生成非对称密钥
[root@server ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):#私钥存储目录
Enter passphrase (empty for no passphrase):password#私钥的认证密码
Enter same passphrase again:password#确认私钥的认证密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
19:49:2d:57:4d:a6:43:9b:23:f5:75:bd:db:9c:8a:21 root@server.redhat.com
第二步:拷贝公钥到服务器
[root@server ~]# ssh-copy-id root@192.168.20.26
The authenticity of host '192.168.20.26 (192.168.20.26)' can't be established.
RSA key fingerprint is 4c:73:36:e0:21:6d:0c:08:16:66:14:a1:30:26:cb:08.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.20.26' (RSA) to the list of known hosts.
root@192.168.20.26's password:sys_password#系统密码
Now try logging into the machine, with "ssh 'root@192.168.20.26'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@server ~]#
第三步:测试非对称认证
[root@server ~]# ssh 192.168.20.26
Enter passphrase for key '/root/.ssh/id_rsa':password#私钥的认证密码
Last login: Tue Jul 22 09:22:40 2008 from 192.168.20.26
[root@server ~]#
3.证书和口令结合认证
在第二种方法中,如果默认非对称密钥的口令为空,则是只通过证书认证,如果设置了非对称密钥口令,则是证书和口令结合认证,当然这里的口令不是系统口令,是嵌套在密钥中的另外一个口令,可以起到双重保护的作用。
补充:在应用ssh证书认证的过程中,还有两个命令可以应用,
ssh-agent bash #在bash环境下启用ssh代理服务
ssh-add #将ssh密钥添加到内存中
这两个命令结合使用的作用就是避免每次通过SSH登录服务器时重复输入口令,当然这种也会造成一些不安全的因素,所以一般不使用。
本文出自 51CTO.COM技术博客