1. 创建用户
创建voidking用户,并添加sudo权限:
1 | useradd -m voidking -s /bin/bash |
2. 生成密钥对
1 | # 生成 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub |
3. 配置免密登录
添加公钥到远程机器
1 | # ~/.ssh/id_rsa.pub 的内容追加到远程机器的 ~/.ssh/authorized_keys 中 |
注意:authorized_keys文件权限为600。如果配置好了sshd,但是无法使用密钥登录机器,请检查authorized_keys文件权限。
4. 密钥添加失败问题
如果ssh-copy-id
报错cannot create .ssh/authorized_keys: Operation not permitted
或者手动编辑authorized_keys
后无法保存,chmod
也无法改变authorized_keys
文件的权限。
那么可能是因为authorized_keys
被加锁了,防止误删,需要先进行解锁。
1 | chattr -i ~/.ssh/authorized_keys |
5. 测试ssh连接
1 | ssh -vvv root@192.168.56.100 /bin/true |
6. ssh执行远程命令
执行远程命令很简单,直接ssh后面跟着命令就可以了。
1 | ssh root@192.168.56.100 "echo helloworld" |
那如果远程命令里面包含双引号怎么办?变成单引号,或者添加转义。
1 | ssh root@192.168.56.100 "echo 'helloworld'" |
那如果需要远程命令里使用变量怎么办?添加转义。
1 | ssh root@192.168.56.100 "host=\$(hostname);echo \"\${host}\"" |
7. 批量添加开机启动命令
已知主机列表hosts.txt内容为:
1 | 192.168.56.101 |
需求:给主机列表中的机器添加开机启动命令
脚本:
1 | for i in `cat hosts.txt`; do ssh $i "echo '/home/voidking/start.sh' | sudo tee -a /etc/rc.local";done |