shell访问远程主机方法

22 篇文章 0 订阅

1、传统ssh公私密钥授信,免密登录;

    网上文档一堆,不罗嗦了

2、expect交互登录

  1. #!/bin/expect  
  2. set timeout 30  
  3. spawn ssh -l jikuan.zjk 10.125.25.189  
  4. expect "password:"  
  5. send "zjk123\r"  
  6. interact  
注意:expect跟bash类似,使用时要先登录到expect,所以首行要指定使用expect

在运行脚本时候要expect  file,不能sh file了

上面语句第一句是设定超时时间为30s,spawn是expect的语句,执行命令前都要加这句

expect "password:"这句意思是交互获取是否返回password:关键字,因为在执行ssh时会返回输入password的提示:jikuan.zjk@10.125.25.189's password:

send就是将密码zjk123发送过去

interact代表执行完留在远程控制台,不加这句执行完后返回本地控制台 

3、sshpass带密码登录

sshpass -p user_password ssh user_name@192.168..1.2

    sshpass 参数 SSH命令(ssh,sftp,scp等)。
    参数:
        -p password    //将参数password作为密码。
        -f passwordfile //提取文件passwordfile的第一行作为密码。
        -e        //将环境变量SSHPASS作为密码。

    比如说:
        scp abc@192.168.0.5:/home/xxx/test /root   这个命令的作用是将服务器端文件test传到本地文件夹/root下。
        利用sshpass,假设密码为efghi,则可写作:
        ssh -p efghi scp abc@192.168.0.5:/home/xxx/test /root

另外,对于ssh的第一次登陆,会提示:“Are you sure you want to continue connecting (yes/no)”,这时用sshpass会不好使,可以在ssh命令后面加上 -o StrictHostKeyChecking=no来解决。比如说上面的命令,就可以写作ssh -p efghi scp abc@192.168.0.5:/home/xxx/test /root -o StrictHostKeyChecking=no。


PS1、对于sshpass,不用担心ps会显示密码,ps显示出来的密码全是zzzzzz

PS2、sshpass不能像ssh那样跟<<EOF 执行一系列操作,一般的做法是将需要执行的操作写入本地sh脚本,scp到远程主机,然后以sshpass ...... @host "sh xxx.sh"的方式执行,执行结束再删除sh脚本,如果有日志需要取回的话再scp取回日志。

4、其他:重定向、管道


参考:

https://blog.csdn.net/zhangjikuan/article/details/51105166

http://www.bubuko.com/infodetail-1871760.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用如下脚本来自动 ssh 远程连接: ```bash #!/bin/bash # 设置远程主机名 remote_host=admin # 设置密码 password=123 # ssh 连接远程主机 sshpass -p "$password" ssh "$remote_host" ``` 请注意,这个脚本使用了 sshpass 工具,如果你的系统没有安装 sshpass,请先安装: ```bash sudo apt install sshpass ``` 在执行脚本之前,请确保您已经在本地主机上生成了 ssh 密钥对,并将公钥拷贝到远程主机的 `~/.ssh/authorized_keys` 文件中。这样,你就可以在脚本中省略密码,并使用密钥对进行认证,从而更安全地连接远程主机。 ### 回答2: 可以使用以下脚本实现自动ssh远程连接: ``` #!/bin/bash HOSTNAME="admin" PASSWORD="123" # 执行ssh连接命令 sshpass -p $PASSWORD ssh $HOSTNAME ``` 在脚本中,我们使用了`sshpass`命令来自动输入密码,以避免手动输入密码。`sshpass`是一个可以自动填充ssh密码的工具,需要事先安装。 将以上脚本保存为`ssh_connect.sh`文件,并赋予执行权限。 在终端中执行以下命令来运行脚本: ``` ./ssh_connect.sh ``` 脚本会自动连接到远程主机`admin`并输入密码`123`完成身份验证。 请注意,在使用密码进行身份验证的情况下,为了安全,建议在执行脚本之前进行必要的权限和访问控制设置,以确保脚本只能被授权的用户执行。 另外,除了使用密码进行身份验证,还可以通过公钥认证等其他方式来实现更加安全的远程连接。 ### 回答3: 可以使用以下脚本来实现自动 ssh 远程连接远程主机。 ```shell #!/bin/bash # 远程主机的信息 host="admin" password="123" # ssh 连接远程主机 sshpass -p $password ssh $host ``` 该脚本使用了 `sshpass` 工具来自动输入密码进行 ssh 连接。请确保在运行脚本之前已经安装了 `sshpass` 工具。如果没有安装,可以通过以下命令进行安装: ```shell sudo apt-get install sshpass ``` 脚本中的变量 `host` 和 `password` 分别存储了远程主机主机名和密码。在实际使用时,可以根据实际情况修改这些变量的值。 要运行该脚本,只需要在终端中执行以下命令: ```shell ./script.sh ``` 执行该命令后,将会自动进行 ssh 连接,并提示输入密码。输入正确的密码后,即可成功登录到远程主机。 注意:为了保证脚本的安全性,请确保将脚本的权限设置为只有脚本所有者可执行,即通过以下命令进行设置: ```shell chmod 700 script.sh ``` 请注意,在使用自动 ssh 连接时,请确保密码的安全性,不要将脚本放在可能被他人访问到的位置,并且定期更改密码以保护您的远程主机的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值