开发者

Fool a program run from within a shell script into thinking it's reading from a terminal

I'd like to write a shell script that does something like the following

while read line开发者_开发技巧; do
echo $line 
done<input.txt | ssh > output.txt

This is a bit pseudo codey at the moment (the original is at work), but you should be able to tell what it's doing. For simple applications this works a treat, but ssh checks the input to see whether it's stdin is a terminal.

Is there a way to fool ssh into thinking that the contents of my piped loop are a terminal rather than a pipe?

EDIT : Sorry for not adding this originally, this is intended to allow ssh to log in via the shell script (answering the password prompt)


ssh -t -t will do what you want - this tells ssh to allocate a pseudo terminal no matter whether it is actually running in one.


Update

This problem (after updating your question and various comments, it became clear you are looking for a way to conveniently get public key encryption into place) could perhaps be solved by 'thinking upside down'.

Instead of trying very hard to get your clients public key onto a server that doesn't yet authenticate the client, you can try to receive an authenticated identity (private key) from that server.

Simple terms: generate a keypair on the server instead of the client, and then find a way to get the keypair on the client. The server can put the public key in it's authorized_keys in advance, so the client can connect right away.

Chances are that

  • the problem of getting the key across is more easily solved (you could even use a 'group' key for access from various clients)
  • if a less-secure mechanism is chosen (convenience over security) at least only the security of the client is reduced, not as-much that of the server (directly).

Original answer:

Short answer: Nope. (it would be a security hole for ssh, because ssh 'trusts' the tty for password entry, and the tty only)

Long answer, you could try to subvert/creatively use a terminal emulator (look at script/scriptreplay for inspiration).

Why would you want to do it?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜