一、使用密钥对无密码登录Linux服务器
1. 用ssh-keygen生成密钥对
为了减少文件移动操作,建议在客户端操作。
ssh-keygen -t rsa
建议不要输入密码passphrase, 一直按enter就好了。 如果不指定文件名,会生成 id_rsa(私钥), id_rsa.pub(公钥)两个文件。
Tips: 注意,如果这里指定了密钥文件名,不做配置的话会出现“Permission denied (publickey)”错误。 因为ssh默认读取文件名为id_rsa的这个私钥。用别的文件名的话需要添加配置文件 ~/.ssh/config 进行配置。下面是配置样本 Host [服务器A地址] #IdentityFile ~/.ssh/id_rsa IdentityFile /path/to/othername
2 将上面生成的公钥文件复制到主服务器~/.ssh目录
复制的方法可以通过ftp工具,linux服务器之间也可以通过scp命令。
scp id_rsa.pub serverA:~/.ssh/id_rsa.pub
复制后id_rsa.pub可删除掉。
如果主服务器~/.ssh目录下没有authorized_keys文件,需要将id_rsa.pub改名为authorized_keys。 如果已经存在该文件,将id_rsa.pub的文件内容追加到authorized_keys后面即可。
cat id_rsa.pub >> ~/.ssh/authorized_keys
3. 设置恰当的文件夹权限
登录主机,如下设置恰当的文件夹权限并用ll命令确认。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4. 设置密钥登录功能
编辑/etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
验证设置是否正确
ssh user@[服务器A地址]
如果不需要输入密码实现远程ssh登录,说明设置正常完成。
Tips: 以密钥方式登录成功后,建议在/etc/ssh/sshd_config中禁用密码登录,以增强服务器安全性: PasswordAuthentication no
二、SCP无密码拷贝服务器文件
一旦按照第一节完成密钥对登录服务器操作之后,就可以方便使用scp命令无密码存取操作主服务器的文件了。
附录:通过脚本自动升级程序
#!/bin/sh
pid=`ps -ef | grep need_upgrade_process | grep -v 'grep' | awk '{print $2}'`
echo $pid
for id in $pid
do
kill -9 $id
echo "killed $id"
done
echo '杀死了所有相关程序'
scp [host]:/source_path/source_file /local_path/
cd /local_path
nohup ./need_upgrade_process &
echo '启动完成'
ps -ef|grep need_upgrade_process
参考:
- ssh 免密码登录 实现scp跨服务器拷贝文件
- ssh-keygen之后,生成的密码都叫id_rsa.pub,我想改名不行吗?
|