背景:云服务,一直被别人错误登录,尝试使用秘钥文件,禁用密码登录
root账户生成pem文件,终端登录(也可以非root)
.pem文件是用于终端连接到服务器文件,和私钥内容一致
私钥文件,用于和远程服务器的authorized_keys 的文件进行匹配,实现免密登录
.pub文件是用于拷贝到远端服务器的文件
Windows 登录远端linux服务器
在远端linux服务器生成密钥对,把私钥拷贝成.pem结尾文件,把公钥追加到authorized_keys
Windows通过putty等远程连接工具,通过.pem文件直接进行免密登录
在服务器上创建秘钥对文件
cd /root/.ssh
ssh-keygen -t rsa -C "root的密钥" -f "tencent_key"
#-f 指定生成的秘钥文件名 -C选项是公钥文件中的备注
#回车后输入你使用公钥时的密码
#再次回车输入相同密码
#普通用户在自己家目录执行该命令生成密钥
cp tencent_key tencent_key.pem #生成pem文件,root_key是私钥文件,使用远程工具登录一定是私钥
#一定要将tencent_key.pem文件拷贝到本地
cat tencent_key.pub >> authorized_keys #追加公钥到authorized_keys,把私钥对应的公钥内容放到authorized_keys,就可以通过私钥连接到服务器了
chmod 600 authorized_keys #限制authorized_keys文件权限
vim /etc/ssh/sshd_config #编辑ssh的配置文件
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
systemctl restart sshd #重启服务,
到此已经可以使用密钥登录了 ,选择密钥为tencent_key.pem文件登录即可,但还是可以密码登录,需要下列设置才可以只通过pem文件登录
取消输入密码登录
vim /etc/ssh/sshd_config
PasswordAuthentication yes # 修改 PasswordAuthentication 的yes 为no
systemctl restart sshd #重启服务
如下的通过mobaxterm免密登录到服务器
服务器间的免密登录
Linux服务器间登录原理
当前服务器生成密钥对,把公钥内容追加到远端服务器的~/.ssh/authorized_keys,当前服务器指定生成的私钥直接访问到远端服务器。指定私钥文件是为了使私钥文件和远端服务器的authorized_keys进行匹配,匹配成功就实现了免密登录
yum install -y openssh openssh-server openssh-clients #安装软件
systemctl restart sshd #启动
netstat -anplut | grep ssh #查看监听状况
基于秘钥连接:
生成秘钥:
ssh-keygen -t rsa -C "root的密钥" -f "root_key"
#-f 指定生成的秘钥文件名 -C选项是公钥文件中的备注
#回车后输入你使用公钥时的密码,也可以直接回车
#再次回车输入相同密码
ssh-copy-id -i /root/.ssh/root_key.pub root@192.168.0.10
#拷贝公钥,root_key.pub这个文件是上条命令生成的公钥文件,这条命令是把这个文件内容拷贝到远端的authorized_keys里,也可以手动复制
ssh -i /root/.ssh/root_key root@192.168.0.10 #-i指定刚生成的私钥,免密登录到远程主机
双机互信:
双方都去生成秘钥,将自己的公钥拷贝给对方即可
远程拷贝
远程拷贝: scp 如果没做双击互信,需要密码,AWS没有密码需要秘钥
scp 本地文件路径 远端IP:/路径 #从内地拷贝到远端
scp /root/welcome.txt 192.168.0.10:/tmp
scp 远端IP:/文件路径 本地路径 #从远端拷贝到本地
scp root@192.168.0.10:/root/hello.txt /root
新建私钥文件(就是令一台EC2登录密钥)把对面的秘钥存入自己的EC2中(lrzsz)
chmod 400 /path/xjp-zabbixserver.pem
scp -i ./xjp-zabbixserver.pem 172.18.1.170:/www ./ #指定密钥文件,拷贝本地文件到远端
scp -r -i ./xjp-zabbixserver.pem 172.18.1.170:/www ./ #指定密钥文件,拷贝本地目录到远端
堡垒机使用密钥登录
堡垒机一般上传私钥
首先在第一台服务器yunwei账户下创建密钥对文件
mkdir /home/yunwei/.ssh
cd /home/yunwei/.ssh/
ssh-keygen -t rsa -C "yunwei's key" -f "yung0a1_key"
cp yunwei_key yunwei_key.pem
cat yunwei_key.pub >> authorized_keys
chmod 600 authorized_keys
chown -R yunwei.yunwei .ssh
systemctl restart sshd
echo "yunwei ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers #添加免密sudo
#压缩密钥文件 传到其他服务器
cp -r .ssh key
tar -czvf key.tar.gz key
第一台服务器下载key文件后,上传到其他服务器 /tmp下
在本机
scp /home/yunwei/key.tar.gz root@192.168.128.9:/tmp/
#推送本机的key.tar.gz 文件至远端服务器192.168.128.9的/tmp目录下
# -i /home/root/root.key 如果root也是通过密钥对连接,使用-i参数,指定私密文件位置进行登录
mv /tmp/key.tar.gz /home/yunwei/
cd /home/yunwei/
tar -xzvf key.tar.gz
mv key .ssh
chown -R yunwei.yunwei .ssh
rm -rf key.tar.gz
systemctl restart sshd
echo "yunwei ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
#如已有yunwei账户,可以使用替换
#sed -i s'/yunwei ALL=(ALL) ALL/ yunwei ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
密码策略
密码长度和有效期要求
修改密码长度在 文件/etc/login.defs 里PASS_MIN_LEN 参数值,常规是8
修改密码有效期在文件/etc/login.defs 里 PASS_MAX_DAYS 参数值,默认是永久,安全又要求可以改为90天
vim /etc/login.defs