shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?请各位帮忙
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?请各位帮忙相关的知识,希望对你有一定的参考价值。
root密码如何在命令行中传递呀?比如shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?
参考技术A #!/usr/bin/expectset pw pawword
spawn ssh 192.168.1.200
expect 'password: '
send "$pw\r"
expect '#'
send "exit\r"
expect eof
chmod +x ssh.sh
./ssh.sh 试试呢 哈哈本回答被提问者和网友采纳 参考技术B 简介:利用public keys 和 private keys,并将public keys传到要访问的远端计算机,使其信任
操作:
1。在本机执行 ssh-keygen -t dsa 然后一路回车,就会生成在该账户的home 即 /home/username/.ssh/id_dsa 和 /home/username/.ssh/id_dsa.pub 这;两个文件
2。在远端需要访问的机器上复制一份 本机生成的 id_dsa.pub 文件,路径是 /home/username。
3。并在远端机上将 id_dsa.pub文件加入到 authorized_keys文件,即 cd /home/username
; cat id_dsa.pub >> .ssh/authorized_keys
4。测试,在本机执行 ssh 远端机,可以看到不需要密码就可以登陆了 参考技术C 用expect 具体代码 baidu
luck
本地shell脚本中ssh到远程服务器并执行命令
参考技术A 在实际运用中在当前服务器执行命令后,需要在另一台服务器继续执行某些命令,分开去到另一台服务器执行也是比较麻烦的,因此整理下集中执行的方式1、首先配置ssh免密操作
Linux 下实现SSH互信: https://www.jianshu.com/p/2456d98aa607
2、简单命令
ssh root@192.168.1.1 "cd /var/lib; ls; cd "
2.1 使用时注意,双引号必须有。若没加双引号,第二条及之后的命令会在本地执行
2.2 分号是将两条语句间隔开
2.3 单双引的区别:单引号不会解析值,是什么就传什么;双引号会解析值,将解析结果传过去
3、多条命令
ssh root@192.168.1.1<< reallssh
cd /var/lib/test
tar -zxvf api.com.tar.gz
......
exit
reallssh
3.1 命令写在 << reallssh(开始) 至 reallssh(结束) 之间
3.2 reallssh可自己定义为其他形式
3.3 在结束前加上exit退出远程
4、可能遇到的问题
问题:远程登录主机时出现Pseudo-terminal will not be allocated because stdin is not a terminal. 错误
解决方案:字面意思是伪终端将无法分配,因为标准输入不是终端。
所以需要增加-t -t参数来强制伪终端分配,即使标准输入不是终端。
to force pseudo-tty allocation even if stdin isn’t a terminal.
参考样例如下:
ssh -t -t user1@192.168.1.1 -p 22
--------------------------------------------------------------------------------
参考:https://blog.csdn.net/jinking01/article/details/84386769
以上是关于shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?请各位帮忙的主要内容,如果未能解决你的问题,请参考以下文章
linux下如何使用ssh远程登录主机 执行shell脚本?