I am LAZY bones? AN ancient AND boring SITE

又解决了一个ssh的问题

经常要ssh到一个服务器里面,通过这个服务器再ssh到另一个服务器(出于安全考虑,后者没有公网IP,必须先ssh到前者,再跳转),以前都是手工输命令,想用一行命令解决,于是这样写:
ssh userA@hostA “bash -c ‘ssh userB@hostB'”
倒是登上去了,但是出现一行:
Pseudo-terminal will not be allocated because stdin is not a terminal.
就没有任何提示了,而且也可以正常执行命令,就是没了PS1,多少觉得有些不爽.
今天发现,只要这样写,就可以一起正常了:
ssh -t userA@hostA “bash -c ‘ssh userB@hostB'”
哈哈, -t Force pseudo-tty allocation.
上面的情况是两步登陆都有公钥的,下面要解决提示输入密码的时候,改怎么办了….难道非得用 expect ?
PS: 有没有人知道ssh命令里面能不能直接输入密码的? 就像 ftp ftp://user:password@host 一样.

最后修改时间: 2008年05月07日 17:43

本文章发表于: 2008年05月07日 17:43 | 所属分类:故障分析. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

5 个评论 关于: “又解决了一个ssh的问题”

  1. magicgod 在 2008年05月07日 19:00 说:回复

    把登录客户端的public key加入到ssh服务器用户的authorized_keys里就行了,要比ftp安全和方便。

  2. leeight的马甲 在 2008年05月08日 09:12 说:回复

    我用的就是expect和luit的组合
    expect用来输入密码
    luit用来做编码转化

  3. 9linux 在 2008年05月24日 10:23 说:回复

    -pw不是能吗?

  4. 9linux 在 2008年05月24日 10:25 说:回复

    -pw passw login with specified password
    我用的是windows下的plink.exe

  5. bones7456 在 2008年05月24日 15:37 说:回复

    plink.exe是什么啊?我本机和远程都是linux啊。。。

发表评论