Nastavil jsem své ssh věci pomocí tento průvodce , a to fungovalo dobře (mohl jsem běžet hg Push
bez požadavku na přístupové fráze). Co se mohlo od té doby do dneška stát, vzhledem k tomu, že stále používám stejný domovský adresář.
$ cat .hg/hgrc
[paths]
default = ssh://[email protected]/tshepang/bloog
$ hg Push
Enter passphrase for key '/home/wena/.ssh/id_rsa':
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
Musíte použít agenta ssh. Krátká odpověď: zkuste
$ ssh-add
před tlačením. Na požádání uveďte přístupové heslo.
Pokud ještě nespouštíte agenta ssh, zobrazí se následující zpráva:
Could not open a connection to your authentication agent.
V takovém případě můžete jeden spustit a tak nastavit své prostředí
eval $(ssh-agent)
Pak opakujte ssh-add
příkaz.
Vyplatí se podívat na ssh agent manpage .
Způsob, jak to vyřešit, je pomocí ssh-agent
a ssh-add
:
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
Poté je přístupová fráze uložena pro aktuální relaci. a nebudeme se na to znovu ptát.
Používám Keychain pro správu ssh klíčů. Je také k dispozici v Debianu a pravděpodobně tedy s Ubuntu
apt-get install keychain
Tady je stránka balíčku s klíči pro Debian . Jak vidíte, projekt není příliš aktivní, ale pracuje pro mě. Také jsem o tom trochu komentoval v jiné odpovědi zde
Vytvořte (nebo upravte, pokud existuje) následující ~/.ssh/konfigurační soubor:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Pro větší pohodlí je optimální metoda kombinací odpovědí jmtd a Faheem .
Použitím ssh-agent
sám znamená, že nová instance ssh-agent
musí být vytvořen pro každý nový otevřený terminál. keychain
po inicializaci požádá o přístupové heslo pro soukromý klíč (klíče) a uloží jej. Tímto způsobem je váš soukromý klíč chráněn heslem, ale nebudete muset znovu a znovu zadávat heslo.
Arch wiki doporučuje inicializovat klíčenku od /etc/profile.d/
nebo váš profil Shell, například .bash_profile
nebo .bashrc
. To má nevýhodu v tom, že zahajuje vaši klíčenku, jakmile otevřete terminál.
Flexibilnější přístup je kombinovat keychain
se specifickou tmux
relací. Takže v .bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
... a pak je to jen případ spuštění zabezpečené relace tmux
podle potřeby (spuštěno z klíčence):
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
Nyní bude vaše klíčenka inicializována pouze jednou, když spustíte tuto konkrétní tmux
relaci. Dokud tato relace přetrvává, budete mít přístup k těmto klíčům ssh
a Push to do vzdálených úložišť.
Můžete použít sshpass
:
$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]
Stačí přidat sshpass -p yourpassphrase
před připojením obvyklého příkazu ssh
.