SSH通过公钥登录并执行命令

配置ssh自动登录脚本进行远程管理时常常需要手动输入密码,Powershell开发者表示永远不会开发保存密码的功能,因为这样太不安全,那么我们如何才能省去手动输入密码的步骤呢,答案就是ssh,配置ssh登录更为安全和方便。

服务器端

首先,在服务器端开启ssh登录

#remote ubuntu
sudo vim /etc/ssh/sshd_config

去掉下面几行的注释

RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys

然后重启服务

Restart-Service sshd

本地端

然后我们回到本地,本地没有ssh,我们最好安装一个git bash或者openssh,

,如果没有密钥,我们要生成密钥

ssh-keygen -t rsa

我们修改客户端配置文件,指定主机、用户、IP、密钥文件

Host vmware
    User pengchao
    Hostname 192.168.110.128
    IdentityFile C:\Users\PengChao\.ssh\id_rsa

#Host Server2 ...

这里Host名字我们可以自己指定,后面登录时候可以用Host直接索引,连用户名和IP都不用输了。

之后我们需要将公钥导入服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub youname@yourserver

直接 ssh ${Host}就可以登录到指定的服务器了,也可以 ssh ${User}@${Hostname},就可以直接登录了。

如果有问题的哈,可以检查下导入的文件名是不是和服务器上的脚本能对上

执行指令

如果指令比较少,我们可以直接写在脚本里

ssh pengchao@192.168.110.128 "cd Documents; ls"

如果指令比较多,我们可以存一个本地脚本,通过如下命令执行

ssh user@server 'bash -s' < script.sh

这里要注意sh脚本的换行符要是unix style的。

 

 

 

发表评论