1. 自动ssh/scp方法==

A为本地主机(即用于控制其他主机的机器) ;
B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;
A和B的系统都是Linux

在A上运行命令:
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh root@192.168.60.110 "mkdir .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/id_rsa.pub (需要输入密码)

在B上的命令:
# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)

回到A机器:

# ssh root@192.168.60.110 (不需要密码, 登录成功)

如出现Agent admitted failure to sign using the key错误

则在A机器上:

# ssh-add   ~/.ssh/id_rsa

2. 控制n个机器如上所述自动登录
那就需要n对钥匙(密钥和公钥), ssh-keygen 命令可以随意更改钥匙对的名字, 比如:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.60.110

这样私钥和公钥的名字分别就是: id_rsa_192.168.60.110和 id_rsa_192.168.60.110.pub;然后将 id_rsa_192.168.60.110.pub 文件的内容, 追加到sever的 ~/.ssh/authorized_keys文件中,最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:
# ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110

scp也是一样的
# scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone

在文件.bashrc中加下两行,每次做同样的操作就不用敲入这样长的命令了:
alias sshcell='ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110'
alias scpcell='scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone'

这样,直接键入一下指令实现ssh和scp自动登录:
# sshcell
# scpcell

3. 自动ssh/scp脚本
如果需要从A,到B,然后才能够到C,那么需要ssh和scp两次,是比较麻烦的。
ssh自动登录:
#!/usr/bin/expect -f
set timeout 30
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh weiqiong@C\r"
expect "password:"
send "pppppp\r"
interact

scp从A拷贝文件到C:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn scp $file weiqiong@B:/home/weiqiong
expect "password:"
send "pppppp\r"
expect "]*"
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp $file weiqiong@C:/home/weiqiong\r"
expect "password:"
send "pppppp\r"
expect "]*"
exit
interact

scp从C拷贝文件到A:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp weiqiong@C:/home/weiqiong/$file .\r"
expect "password:"
send "pppppp\r"
expect "]*"
send "exit\r"
expect "]*"
spawn scp weiqiong@B:/home/weiqiong/$file .
expect "password:"
send "pppppp\r"
interact

4. 建立ssh/scp通道
比如说我的机器是A,中间服务器为B,目标服务器是C
从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C
现在展示利用ssh通道技术从A直接传输文件到C
1. ssh -L1234:C:22 userid@B
input B's password
(1234是本机A的空闲端口,该指令需要A机器上的root用户权限,实际上是在本机1234端口建立了一个通道)

2. 打开一个新的console,键入:
scp -P1234 filename userid@localhost:
input C's password

转自:http://blog.csdn.net/chaixiachen/article/details/6932858

转载于:https://www.cnblogs.com/elta/p/3520768.html

使SSH不用输入密码相关推荐

  1. 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法

    ssh不用手动输入密码登录终端sshpass 和 case的组合用法 1.sshpass 的用法 在第一次手动输入密码ssh mdc@172.16.34.17 登陆上终端后,可以把下面两条语句做成sh ...

  2. 使用scp、ssh等不用输入密码

    使用scp.ssh等不用输入密码 echo scp -r root@132.12.22.35:/www/applog /backlog > exp2.sh echo scp -r /home/o ...

  3. 使用ssh 的ControlMaster实现不用每次ssh都输入密码

    这种也适用于有跳板机的公司机器,不用再每次连接都输入密码了,节省扫码登陆或者输入密码的时间!!! SSH支持 ControlMaster 模式,可以复用之前已经建立的连接.所以开启这个功能之后,如果已 ...

  4. Linux/Ubuntu sudo不用输入密码的方法

    通常我们并不以root身份登录,但是当我们执行某些命令 (command)时需要用到root权限,我们通常都是用"sudo command"来执行command.由于使用Ubunt ...

  5. linux 进目录输入密码,scp在Linux主机之间复制文件/目录不用输入密码

    scp在Linux主机之间复制文件/目录不用输入密码 把你的本地主机用户的ssh公匙文件复制到远程主机用户的~/.ssh/authorized_keys文件中,假设本地主机linux(10.1.1.1 ...

  6. mysql定期执行备份语句_【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件...

    项目部署在服务期上之后,有了新的需求,需要每月定时备份mysql数据库的所有数据! 查找了网上的多篇文章之后,自己又对bat文件中的mysqldump语句进行改进,可以实现了不用输入密码就能自动定时备 ...

  7. 苹果手机免密支付怎么取消_超市“扫码枪”有啥神奇功能?直接扫走你的资金,不用输入密码|移动支付|手机|免密...

    在如今移动支付盛行的时代里,现金已经渐渐淡去在我们的视线当中,出门一部手机就可以搞定很多的事情,相比现金支付,移动支付的便捷性确实要强上太多.随着移动支付的发展,又延伸出越来越多的支付方式,比如密码支 ...

  8. 让 Windows XP 不用输入密码自动登录

    让 Windows XP 不用输入密码自动登录 <script type="text/javascript"></script> 2009-03-05 今天 ...

  9. Windows XP不用输入密码自动登录- -

    Windows XP不用输入密码自动登录- - Windows XP是一个比较安全的操作系统,每次启动时都要求选择账户并输入密码,对于公用电脑,这样当然更安全,但是如果这台电脑是一个人用,也没有什么重 ...

最新文章

  1. 普通人也能用AI拍出3D大片?这位清华博士后这么做
  2. 高可用集群之RHCS
  3. Android --- build.gradle(Module:app)中各版本号讲解,例如targetSdkVersion
  4. Binder ThreadPoolMax default = 15
  5. android aop 权限检查,AOP简单拦截实现验证权限功能
  6. 然并卵,苹果还是那个掉队的巨头
  7. 【论文阅读】Network In Network
  8. 《C语言运算符100例》优先级面试错题
  9. 丰田chr内外循环怎么区分_丰田C-HR怎么开启暖风
  10. 关于将数据写入文件的两个函数fwrite()与fprintf()的大不同 —————— 开开开山怪
  11. 计算机科学 vs 计算机技术
  12. 用ping ,mtr ,traceroute 进行网络丢包分析
  13. Windows dss代理摄像头rtsp流 rtsp摄像头+ffmpeg+vlc
  14. 如何利用互联网思维,让用户从“被动选择”到“主动选择”?
  15. 用C语言代码实现布雷森汉姆直线插补
  16. 如何通过命令行查找一个IP的地理位置信息
  17. HTML5中input输入框默认提示文字向左向右移动
  18. 图像显著性检测——时域分析(谱残差法、相位谱法)
  19. ppt中的图片批量保存的方法(及像素分辨率换算)
  20. SQL教程——存储过程

热门文章

  1. 【mybatis mapper XML】自增主键
  2. springboot启动报错:Unregistering JMX-exposed beans on shutdown
  3. chrome 取消常用缩略图_怎么去掉 Chrome 新标签页的缩略图?
  4. mysql collectset_005.hive列转行 (collect_set() 去重)
  5. wdatepicker设置时间范围_Parker590+在直流电机控制系统中的应用、设置及常见故障排除(中)...
  6. service能去调另外一个service吗_kubernetes的service和pod是如何关联的?
  7. java 有哪些反射机制_Java 的反射机制你了解多少?
  8. python类型错误如何解决_在Python中 出现的错误类型以及解决办法
  9. 在日常办公能做什么_日常生活中电烤箱能烤制什么美食呢?
  10. java词类_英语词类浅谈