问题
To use sftp in a script without user interaction (non-interactive). For example to login to an anonymous ftp server and not have to manually.
回答1:
On your computer
cd ~/.ssh
ssh-keygen -t dsa
press the enter key at every prompt
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
ad:98:43:13:c9:ea:66:8e:d0:d9:66:59:d8:3a:f7:29
The key's randomart image is:
+--[ DSA 1024]----+
| |
| . . |
| + |
| + . . |
| o = S . |
| . + = + . |
|. o @ = . |
| . B oEo . |
| . . .o |
+-----------------+
you will get 2 files id_dsa and id_dsa.pub use scp or other utility to copy file to your server
scp ~/.ssh/id_dsa.pub user@host:~/.ssh/
On your server
Add the new key to the file ~/.ssh/authorized_keys.
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Finally change the access modes;
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
Verify that access mode is correct for ~
ls -ld ~
if not, you can use
chmod 700 ~
to correct your home access.
Logout and login again
回答2:
Type the following commands
ssh-keygenPress Enter key till you get the prompt
ssh-copy-id -i root@ip_address(It will once ask for the password of the host system)
ssh root@ip_addressNow you should be able to login without any password
回答3:
To allow ssh login without entering a password at each login, append your public ssh key to the ~/.ssh/authorized_keys file on your target server. You can find your public key in ~/.ssh/id_rsa.pub or, if it doesn't exist, you may need to generate one.
See detailed answer here
回答4:
May be if you want to turn off SFTP asking you YES/NO questions for each transfer of file when doing ftp using a ftp script file you can use -n -i command line arguments.
ftpscript.in
-----------------
user username pwd
get sourcefile targetfileonlocal
bye
Then you can run this script using ftp -n -i servername<ftpscript.in to avoid getting "Do you want to transfer the sourcefile?y/n" kind of questions. For logging into ftp server without user name, password then the server ftp needs to allow anonymous logins as mentioned by Wesley.
来源:https://stackoverflow.com/questions/4388385/how-to-ssh-login-without-password