How to respond to password prompt when using SCP i

2019-01-25 13:25发布

First of all, I am well aware of that there are many of questions regarding this topic. I have read them, but still could figure out an appropriate answer for my situation.

I would like to scp the entire ~/cs###/assign1 dir from local to school home dir with a shell script. My question is, is there a way in my script to wait for the password prompt, and then simulate key board event to 'type' in my password?


here is a really detailed guide of how to set up the key

12条回答
兄弟一词,经得起流年.
2楼-- · 2019-01-25 13:59

I agree that you should use keys. But expect can automate the interactive aspect of the process IF you want to hardcode your password in a plain-text script file.

查看更多
Deceive 欺骗
3楼-- · 2019-01-25 14:01
Luminary・发光体
4楼-- · 2019-01-25 14:01

You don't say which platform you are using at home and at school. Assuming Linux, Cygwin or OS/X you have several options:

  1. Public key authentication if it hasn't been turned off at the server
  2. ssh-agent and ssh-add to enter your password once per session

For option (1), you would

  1. generate a keypair at home using ssh-keygen, with no passphrase on the private key. Note that omitting a passphrase is probably not a good idea if other people use the same computer, but your objective was to get around having to type in the password.
  2. upload the PUBLIC key to your school account and place it in ~/.ssh/authorized_keys
  3. Use scp with the "-i identityfile" option, where identityfile is the full path to your private key. Or, add an entry to .ssh/config (see the man pages)

For the second option, ssh-agent allows you to cache your password in a local process one time per session. You set an expiration time

查看更多
Ridiculous、
5楼-- · 2019-01-25 14:02

As many have already said that using ssh keys would be the safest and best way. If anyone else is still wondering around and searching for help, in Ubuntu help there is a fast and straight forward way to use ssh keys.

查看更多
趁早两清
6楼-- · 2019-01-25 14:02

Once you set up ssh-keygen as explained here, you can do

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

where id_rsa is the local key generated in the ssh-keygen setup.

If you want to lessen typing each time, you can modify your .bash_profile file and put

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Then from your terminal do source ~/.bash_profile. Afterwards if you type remote_scp in your terminal it should run the scp command without password.

查看更多
戒情不戒烟
7楼-- · 2019-01-25 14:06

Are ssh keys not allowed? That would be a better solution.

查看更多
登录 后发表回答