Jika Anda tidak benar-benar ingin menggunakan pasangan kunci publik / pribadi, Anda dapat menulis expect
skrip untuk memasukkan kata sandi untuk Anda secara otomatis tergantung pada alamat tujuan.
Sunting: Maksud saya adalah Anda dapat memiliki skrip yang, di satu sisi, gunakan expect
untuk memasukkan kata sandi untuk Anda dan, di sisi lain, membaca kata sandi untuk pengguna yang diberikan dan host dari file konfigurasi. Misalnya, skrip python berikut akan berfungsi untuk skenario hari yang cerah:
#!/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)
dan format file konfigurasi adalah sebagai berikut:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Catatan: Seperti yang dijelaskan, skrip python perlu menjadi jauh lebih kompleks untuk menangani semua kemungkinan kesalahan dan pesan pertanyaan dari ssh dan semua URL yang mungkin (dalam contoh diasumsikan bahwa itu akan menjadi sesuatu seperti user@host
, tetapi bagian pengguna tidak t digunakan sebagian besar kali), tetapi ide dasarnya akan tetap sama. Mengenai file konfigurasi, Anda dapat menggunakan file konfigurasi yang berbeda atau menggunakan .ssh/config
dan menulis kode Anda sendiri untuk mengurai file itu dan mendapatkan kata sandi untuk pengguna dan host yang diberikan.