Consider you have a workstation, connect this to a remote server and edit some files in it like
workstation $ ssh sarah#192.0.0.100 # Log into the remote server
Password: MyPassw0rd!
server $ ls /home/sarah/recipes/ # Files you want to edit
applePie.txt bananaCake.txt
server $ vi /home/sarah/recipes/ # Open this directory and edit the files in it
...
:x
server $ logout # Log out and come back to the workstation
Now you want to use Vim/Neovim on your own workstation.
workstation $ vim scp://sarah#192.0.0.100://home/sarah/recipes/
sarah#192.0.0.100's password: MyPassw0rd!
The problem is every time you open files in this server you have to type the same password again. Is there any way to keep this SSH session alive while Vim/Neovim is editing files in the same remote server?
Netrw, which is the tool that handles loading and saving remote files, only prompts for passwords for FTP accounts. The prompt you're seeing is actually from scp, which, as part of OpenSSH, will only prompt for passwords from a TTY.
Because you're entering your password directly into scp and the scp process that's invoked doesn't live more than ephemerally, there's no way to cache your password. Even if Netrw did prompt for your password, scp doesn't provide a way to read passwords noninteractively, so Netrw couldn't cache it and pass it on.
You'll need to use SSH keys if you don't want to enter a password every time. To ease the setup burden, you can use ssh-copy-id to copy your keys just one time to the remote system, and then use Vim as normal without a password prompt.
Related
I now want to know how to execute an instll.sh file, and then transfer the file to another vm regularly through scp without entering a password
Here I define the party that transmits the file as vmA, and the party that receives the file as vmB
I can only do it after executing instll.sh, Iinstall.sh will create ssh key in vmA, and then transfer id_rsa.pub to the authorized_key file of vmB, but when I execute install.sh, he will execute the scp command If the error Host key verification failed. lost connection appears, I have to manually execute the scp command once, and then it will start to automatically execute the transmission work (I use crontab to automatically execute scp)
Explain what install.sh does
Copy some files to their respective directories, such as the files I want to transfer and cronatb..
Restart the crontab service
Please ignore it
Please ignore it
Automatically generate ssh key
Transfer the ssh key to the authorized_keys file of vmB
Execute the scp command once so that the connections on both sides can be successfully connected
When executing point 7, I will be asked to enter a password
Because this install.sh will be on different vm later, such as vmA, vmC, vmD, vmE, and they all need to transfer the data to vmB, I would like to ask if there is a way to execute the install.sh, just It will start to help me execute the work of spc without entering a password, and it can work normally
Is it possible to copy an .war file from one server to another server. I know there is the command scp but it doesn't support password & username. So there is like the command sshpass but I heard about some security problems with this command.
My question now: is there a way to pass an password trough the scp command without something like sshpass?
I have created a very small script below which i want help me to move files from one server to other server periodically via cronjob.
#!/bin/sh
HOST='1.1.1.1'
FILE='EndpointUsage*.*'
PASS='password#'
sftp kingadmin#$HOST
password $PASS <<END_SCRIPT
binary
lcd /var/tmp/
mput $FILE
quit
END_SCRIPT
Problem i am facing.
1) I need this script to give the password automatically, i do not want to give password manually whenever this script run. Currently when i ran the commands its asking for password as below.
LA:/var/tmp # ./portmove.sh
kingadmin#1.1.1.1's password:
2) I want to send the files to particular directory on remote server. Can you please help how to put the locations in the script so that my script can send the files to particular directory let say in every 10 minutes(which i can configure in cronjob)
Thanks you in advance.
Instead of using a password, consider using a public/private key pair.
You can then specify the key file instead of a password.
I want to normalise the yum.repo files for all computers on our small network i.e
sudo scp /etc/yum.repos.d/* $HOSTNAME:/etc/yum.repos.d/
I can loop through all hostnames easily enough and execute the command to copy, however I am prompted for the root password on each occasion which is becoming tiresome. How can I script this with bash or perl so that I only need to type the root command in once?
Implement password-less authentication with ssh keys, as described here, for instance. This will allow to run scripts without password prompts using ssh key file in your home folder.
I have created lately in Windows ssh key - so I have .ppk file. Converted it also to openssh.
In windows I have been using tortoise with pageant to connect to svn+ssh server. Now I want to switch to linux. How can I connect to svn+ssh with this key .ppk or opessh file. I would like to use PagaVCS or RabbitVCS but it keeps asking me for login and password which obviously I don't have because I have only this openssh or .ppk file. Anyone could help??
Use puttygen to convert the key to openssh format. It is for example described here: http://leadingedgescripts.co.uk/server-administration/how-to-convert-your-putty-ppk-private-key-to-a-normal-ssh-key-you-can-use-on-an-apple-mac/
Unfortunately no experience with either Rabbit or the other one. In *nix environment I would create $HOME/.ssh/config and write something like that:
Host host
User user
IdentityFile /path/to/your/key
And then use svn+ssh://host/directory (ssh then takes configuration information from the .ssh/config file). Maybe something like can be done with one of the VCS's?
As last (or first in my case) resort I'd use cygwin or mingw and configure ssh access there - and then configure the tools to use ssh coming from these packages.
Puttygen exports private keys DES encoded, which causes some software (e.g. OpenSSH on Ubuntu) to silently ignore the key and prompt for password.
To use PuTTY .ppk key in linux OpenSSH, first export the key:
Start puttygen
File -> Loadprivate key
Conversions -> Export OpenSSH key (private.key in this example)
Now, on the linux machine, re-encrypt the key using passphrase change command:
ssh-keygen -pf private.key
Enter the same passphrase 3 times (old, new, new) to actually not change it.
Now you can check the key file that DEK-Info: changed from something like DES-EDE3-CBC,F1785C4B846C781F to AES-128-CBC,916627D6328608175FA4545928372EA3.
The client application should not promt you for password anymore.
I am sure the answer for this was online but I can't seem to find it anywhere any more so here it is from beginning to end including the conversion you say you've done:
Open puttygen on Windows.
Load your private key (name.ppk) using the passphrase if needed.
Go to 'Conversions' -> 'Export OpenSSH Key' and save it as (I'll assume you called it 'fileName').
Copy this key into your home directory on Linux.
Open a terminal and move it to the .ssh directory with the command 'mv fileName .ssh/' (~/.ssh is hidden in the gui but it's there).
Navigate to the .ssh dir with 'cd .ssh'
Cat the file into a new file called id_rsa with the command 'cat fileName > id_rsa'.
Change the permissions on id_rsa to 600 with the command 'chmod 600 id_rsa'.
Finally make sure the .ssh directory has its permissions set to 700 'cd ..' to drop to the home directory and 'chmod 700 .ssh' to set permissions.
This should do it.
There must be better info out there but this link has some stuff you might find interesting, particularly the bit about permission http://www.lamolabs.org/blog/6241/one-liner-working-with-ssh-keygen-ssh-key-pair-files/