I need to automate ssh-keygen -t rsa
with out a password i.e. enter at the prompt.
How can I do that from a shell script?
To generate a SSH keypair without being prompted for a passphrase you can do the following:
$ ssh-keygen -f id_rsa -t rsa -N ''
ssh-keygen: option requires an argument -- N
" :( –
Trinity dzdo
command in front of it, so I had to write: dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
–
Trinity -N ''
is significant. When I added the space it succeeded! –
Similar If you need to do this from PowerShell in windows use:
ssh-keygen -f $Name -t rsa -N '""'
note you also have to ensure the git bin directory is in your path:
$sshPath = "<path>\git\bin\"
$env:path += ";$sshPath"
Then to use it in PoshGit it's just:
Add-SshKey "<path>\.shh\KeyFilename"
git\usr\bin
is the correct dir. –
Guarnerius ssh-keygen -f $Name -t rsq -N '""'
. –
Pastoralize '""'
–
Purview '""'
is the only variant which worked for me. –
Quechuan $ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
Just a correction to answer 2... I found out on my OL and RHEL system the file name should be id_rsa not id.rsa.
So on a OL or RHEL system the command would be:
$ ssh-keygen -f id_rsa -t rsa -N ''
id_rsa
is the default file name for an RSA key, so if you wants to stick to the default, you are not forced to explicitly use the -f
option. –
Mighty -f
option is so that you can execute this in a script. You can just reaffirm the default to disable the subsequent prompt. –
Austria What about :
ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''
As noted in man ssh-keygen
:
SYNOPSIS
ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
-q Silence ssh-keygen.
(that is with openssh-client
package in Debian 9.4 stretch : OpenSSH_6.7p1 Debian-5+deb8u4
)
ssh-keygen -q -t ed25519 -f id_ed25519 -N ''
does not work for me,Windows PowerShell in Admin mode on Windows 10 Home. I can only get it to run with ssh-keygen -t ed25519 -f id_ed25519
, which will ask me Enter passphrase (empty for no passphrase):
twice. How can I avoid having to press any enter button? –
Mencher I needed to automate in a bash script the ssh-keygen command and the final answer which works well to me:
echo -e "\n" | ssh-keygen -N "" &> /dev/null
The echo command with the -e interprets "\n" as an Enter key, but do not work with the passphrase. Then using the option -N "" (empty passphrase) the password will be empty and will not ask for anything. &> /dev/null will send the 'stdout' and 'stderr' to /dev/null so nothing is printed through the display.
Please Enjoy this script... Powershell script (e.g. for github)
paste this into your myscript.ps1 file...
param(
[Parameter(Mandatory)]
[string]$keyName=$(throw "keyName - Param must be supplied"),
[Parameter(Mandatory)]
[string]$email=$(throw "email - Param must be supplied"),
$u="git",
$d="github.com",
$c="rsa"
)
$repo="repoName"
$account=":accountName"
$currentDir = Get-Location
Write-Host $HOME/.ssh/$keyName`_$c
mkdir $HOME/.ssh
Set-Location $HOME/.ssh
ssh-keygen -f ./$keyName`_$c -t $c -C $email -N '""'
Add-Content -Path ./config -Value "
Host $keyName
User $u
Hostname $d
PreferredAuthentications publickey
IdentitiesOnly yes
IdentityFile $HOME/.ssh/$keyName`_$c"
Write-Host "`n
Put this key into $d :"
cat $HOME/.ssh/$keyName`_$c.pub
Write-Host "`n
Use this to Clone the $repo repo :
git clone $u@$keyName$account/$repo.git"
cat config
Set-Location $currentDir
above is untested but it is close to what I have working
Command to execute
> myscript.ps1 -keyName yourname -email [email protected]
© 2022 - 2024 — McMap. All rights reserved.