创建用户
创建voidking用户,并添加sudo权限:
1 | useradd -m voidking -s /bin/bash |
生成密钥
1 | ssh-keygen |
第一条命令执行完之后,.ssh目录下生成了 id_rsa 和 id_rsa.pub。
第二条命令执行完之后,当前目录下生成了 voidking_rsa 和 voidking_rsa.pub,注释内容为 voidking@qq.com 。
使密钥生效
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub voidking@hostname |
ssh-copy-id 这个命令做的事情,是把 id_rsa.pub 中的内容,追加到 hostname:/home/voidking/.ssh/authorized_keys
文件中。
authorized_keys文件权限为600。如果配置好了sshd,但是无法使用密钥登录机器,请检查authorized_keys文件权限。
密钥添加失败问题
如果ssh-copy-id
报错cannot create .ssh/authorized_keys: Operation not permitted
或者手动编辑authorized_keys
后无法保存,chmod
也无法改变authorized_keys
文件的权限。
那么可能是因为authorized_keys
被加锁了,防止误删,需要先进行解锁。
1 | chattr -i ~/.ssh/authorized_keys |
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}\"" |
批量添加开机启动命令
已知主机列表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 |