Kan du angi passord i .ssh/config for å tillate automatisk pålogging?

Jeg bruker Ubuntu 11.10. Jeg bruker ssh for å koble til mange servere daglig, så jeg legger inn parametrene i .ssh/config filen slik:

Host Home
User netmoon
Port 22
HostName test.com

Er det mulig å legge inn passord for hver tilkobling i denne filen, slik at når serveren ber om passordet, skriver terminalen inn passordet og sender det til serveren?

Jeg trenger dette fordi jeg av og til står borte fra PC-en, og når jeg går tilbake, skriver inn et passord og trykker på Enter, sier terminalen KOBLING LUKKET.

P.S. Jeg ønsker ikke å bruke et offentlig/privat nøkkelpar.

Hvis du ikke ønsker å bruke et offentlig/privat nøkkelpar, kan du skrive et expect-skript som automatisk skriver inn passordet for deg avhengig av destinasjonsadressen.

Edit: Det jeg mener er at du kan ha et skript som på den ene siden bruker expect til å skrive inn passordet for deg, og på den andre siden leser passordet for en gitt bruker og vert fra en konfigurasjonsfil. For eksempel vil følgende python-skript fungere for solskinnsdag-scenariet:

#!/usr/bin/python                                                                                                                        
import argparse
from ConfigParser import ConfigParser
import pexpect

def main(args):
    url = args.url
    user, host = url.split('@', 1)

    cfg_file = 'ssh.cfg'
    cfg = ConfigParser()
    cfg.read(cfg_file)
    passwd = cfg.get(user, host)

    child = pexpect.spawn('ssh {0}'.format(url))
    child.expect('password:')
    child.sendline(passwd)
    child.interact()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Run ssh through pexpect')
    parser.add_argument('url')
    args = parser.parse_args()
    main(args)

og konfigurasjonsfilformatet vil være som følger:

[user_1]
host1 = passwd_1
host2 = passwd_2

[user_2]
host1 = passwd_1
host2 = passwd_2

Merk: Som forklart, må python-skriptet være mye mer komplekst for å håndtere alle mulige feil- og spørsmålsmeldinger fra ssh og alle mulige nettadresser (i eksemplet er det antatt at det vil være noe sånt som user@host, men brukerdelen brukes som regel ikke), men grunnideen vil fortsatt være den samme. Når det gjelder konfigurasjonsfilen, kan du bruke en annen konfigurasjonsfil eller bruke .ssh/config og skrive din egen kode for å analysere filen og hente passordet for en gitt bruker og host.

Kommentarer (4)

Nei, det er dessverre ikke mulig.

Det eneste reelle alternativet er å bruke private nøkler, men det har du sagt at du ikke vil (hvorfor ikke?).

Kommentarer (6)

Svaret til @BrunoPereira på dette spørsmålet viser en alternativ metode for å koble til uten eksplisitt å skrive inn et passord og unngå ssh-nøkler.

Du kan opprette et skript, et alias eller en funksjon i ~/.bashrc for raskt å utføre kommandoen.

Det er selvsagt en del sikkerhetshensyn du bør ta i betraktning ved denne fremgangsmåten.

Kommentarer (1)