第一步添加用户:
方法一:wget http://localhost/adduser.sh -O key.sh; /bin/sh key.sh testusername; rm -f key.sh
方法二:直接上传key.sh 后执行
/bin/sh key.sh testusername; rm -f key.sh
key.sh脚本文件:注意:脚本文件里的链接 http://localhost/soft/ssh/$1.key 是生成的密钥证书(可有,可无),
没有的话就要自己自行将生成的密钥内容复制到
/home/$1/.ssh/目录下的 authorized_keys文件中(注意复制时前面可能会少个字母,对比下复制前后内容是否一致,小编在这里被坑了半天)
if [ $# -eq 1 ];then /usr/sbin/userdel $1; /usr/sbin/groupdel $1; /usr/sbin/useradd -g users $1; /usr/bin/passwd -u $1; /usr/bin/passwd -u -f $1; /usr/bin/passwd -d $1; /usr/bin/passwd -uf $1; mkdir /home/$1 mkdir /home/$1/.ssh; wget http://localhost:8080/soft/ssh/$1.key -O /home/$1/$1.key cat /home/$1/$1.key > /home/$1/.ssh/authorized_keys; chown -R $1 /home/$1; chgrp -R users /home/$1; chmod 700 /home/$1; chmod 700 /home/$1/.ssh; chmod 600 /home/$1/.ssh/*; chown -R $1 /home/$1/.ssh; rm -f /home/$1/$1.key; fi
下面这段shell有隐藏字符,可能运行不了,其实与上面的一样的,仅供阅读
if [ $# -eq 1 ];then
/usr/sbin/userdel $1;
/usr/sbin/groupdel $1;
/usr/sbin/useradd -g users $1;
/usr/bin/passwd -u $1;
/usr/bin/passwd -u -f $1;
/usr/bin/passwd -d $1;
/usr/bin/passwd -uf $1;
mkdir /home/$1
mkdir /home/$1/.ssh;
wget http://localhost/soft/ssh/$1.key -O /home/$1/$1.key
cat /home/$1/$1.key > /home/$1/.ssh/authorized_keys;
chown -R $1 /home/$1;
chgrp -R users /home/$1;
chmod 700 /home/$1;
chmod 700 /home/$1/.ssh;
chmod 600 /home/$1/.ssh/*;
chown -R $1 /home/$1/.ssh;
rm -f /home/$1/$1.key;
fi
第二步制作密钥
方法一:使用xshell 工具制作:
具体步骤就不介绍了,自己网上搜索一大堆
在Xshell -----工具-----新建用户密钥生成向导
生成的密钥内容格式是这样的:
ssh-dss AAAAB3NzaC1kc3MAAACBAJH9syp+JSnLuXZfaxtrzXk+r22e304SrneEA7NjVpPmF0IsY8SDS/6OBz9nJ3U6PugzDUXkYWHwtOQ0Z27FdFoepBgxGWF7lK8648oNgYD6H9ia3QelEgpWvoiyQV6MIuG7weytYHrZwQyjIyyVmJ7l0TodPmZ9XZmfTnReOF+1AAAAFQC+JVWUSThkbhGUJGw6i3/Md4zDgQAAAIAkaJEMIo2UoJZBXVFUwjifvaN4E38kftReRrmAaOh5xCZdp3kUhmFxayOyGHEkeekU5I18wOk+83O/w/j3KWutaGsZaGa/ujuMSBkc5NwjVPBlvSp0VIuJ2c2CNz0ksAHNUrRkVwYlkk/PTlza8GSZSfGKQ1gRwlnHxGiCrZ5NmwAAAIBMs0LgF++IcjzK1z6rIvMYba0V/UNe77bN+l10cfDv0DI7zbVfucWWjvrUAhxPIqLXVCoFPOesow8D36blNj0xcbogz+LbAux2da4o/V9bJobKyLVHqTH2MnxnZOhTwvPK76u+Qzzk00kiPGzTaIldG0OKebRnpDMeZkJuFkJtRA==
方法二使用ssh命令制作:
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;
[root@localhost .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
把生成好的密钥
复制到/home/$1/.ssh/目录下的 authorized_keys文件中
第三步修改 ssh配置文件:
//查看系统版本
[root@localhost cat /etc/redhat-release
//修改ssh配置 增加一个ssh端口
[root@localhost ssh]# vi sshd_config
修改sshd_config配置文件
vi /etc/ssh/sshd_config
PubkeyAuthentication yes #启用公告密钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #设定PublicKey文件路径
RSAAuthentication yes #允许RSA密钥
PasswordAuthentication no #禁止密码验证登录,如果启用的话,RSA认证登录就没有意义了
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no
重新加载sshd服务: /etc/init.d/sshd restart
//重启ssh服务
[root@localhost ssh]# /etc/init.d/sshd restart
查看日志:
tail -f /var/log/secure 也没有相应的错误日志
在ssh配置文件增加了端口,还要把端口开放出来:
开放端口:
LINUX通过下面的命令可以开启允许对外访问的网络端口:
/sbin/iptables -I INPUT -p tcp --dport 18834 -j ACCEPT #开启18834端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
查看端口是否已经开放
/etc/init.d/iptables status
参考命令配置:
vim /etc/ssh/sshd_config
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
#有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no
第四步测试:测试了连个用户测试通过
二