ssh密钥登录及远程执行命令
以192.168.1.104
作为客户机
以192.168.1.103
作为服务器
使用密钥登录
创建密钥对
在SSH客户机创建用户秘钥对
ssh-keygen -t rsa
之后全回车即可
将会在~/.ssh
目录中生成两个文件:id_rsa
(私钥) 与 id_rsa.pub
(公钥)
上传公钥文件
当然,也可以直接将内容拷贝粘贴
scp ~/.ssh/id_rsa.pub chencye@192.168.1.103:~/.ssh/id_rsa.pub_192.168.1.104
导入公钥信息
在SSH服务器中导入公钥文本
在服务器中,目标用户(用来远程登录的用户)的公钥数据库位于~/.ssh/
目录下,默认文件名是authorized_keys
。
注意修改authorized_keys权限
# 如果authorized_keys不存在,则创建它
touch ~/.ssh/authorized_keys
# 将上传的公钥添加到authorized_keys后面
cat ~/.ssh/id_rsa.pub_192.168.1.104 >> ~/.ssh/authorized_keys
# 修改authorized_keys权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 查看authorized_keys最后一行
tail -1 ~/.ssh/authorized_keys
使用密钥对登录
在客户机上,可以直接使用命令ssh 192.168.1.103
进行登录,而不需要输入用户名与密码了
远程执行命令
简单命令
双引号,必须有。如果不加双引号,第二个命令在本地执行
分号,两个命令之间用分号隔开
ssh chencye@192.168.1.103 "cd ~ ; touch ssh.txt"
使用脚本执行多命令
#!/bin/bash
ssh chencye@192.168.1.103 > /dev/null 2>&1 << sshoff
cd ~
touch autossh.txt
exit
sshoff
echo "done!"
远程执行的内容在<< sshoff
至sshoff
之间,在远程机器上的操作就位于其中
注意的点:
sshoff
可以随便修改成其他形式
重定向目的在于不显示远程的输出了
在结束前,加exit退出远程节点