How to use SFTP from command line without entering user and password

I would like to use SFTP from command line without entering userid and password.

Here is what I have gathered and did.

1) Create a public and private key pair for the protocol you want to use.

To create a key pair for use by SSH2, enter:

ssh-keygen -t dsa

I did that and got following message

Enter file in which to save the key (/home/user1/.ssh/id_dsa): /home/user1/.ssh/id_dsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_dsa.
Your public key has been saved in /home/user1/.ssh/id_dsa.pub.
The key fingerprint is:
71:f5:3d:8f:ae:2a:73:9c:79:92:b0:35:ca:9a:2f:ed

I did not enter a passphrase

2) Next step I did was copied this file to a remote machine to which I want to connect like this

scp /home/user1/.ssh/id_dsa user2@machine2:/home/user2/.ssh/authorized_keys

Now I logged out from user1@machine1 and user2@machine2

and then just write following lines in a korn shell script:

sftp machine2
put test_file

but it asks for password for user2 on machine2.

So what else am I missing???

:confused:

I copied the id_dsa.pub key to authorized keys and now scp works

but I still get following error for SFTP

machine1[/home/user1] ==>
machine1[/home/user1] ==>sftp ~/SFTP_test_file machine2:/home/user2/ftptest
Connecting to /home/user2/SFTP_test_file...
ssh: /home/user2/SFTP_test_file: no address associated with name
Connection closed
machine1[/home/user1] ==>
machine1[/home/user1] ==>

=======================

However this is the public key which I don't want to use. I want to use the private key so that noone else can log in.

:confused:

It seems that you forgot a "-b" option before "~/SFTP_test_file". That's why sftp is interpreting that as a servername instead of a commands file.
Regards.

Anyway, you look a little bit confused about how public key cryptography
works... Public-key cryptography - Wikipedia, the free encyclopedia

You might also want to use "expect" instead...

In a nutshell;
ssh-keygen creates 2 keys, one private, one public (.pub)
The public key goes to the server you want to log on to without using a passwd.
The private key is the key that stays in the server you connect from and needs to be matched by the pub key.

Is there a reason why you want to use 2 commands (sftp, put) instead of one (scp)?

what if we want to bring multiple files from server 2?? can we still use scp from server 1.

Do following

sftp user2@machine2

As long as you have a pattern to match on the source, yes you can.