ssh config untuk beberapa lompatan ditambah "sudo su"

Oct 16 2020

Saya memiliki penyiapan tertentu yang memerlukan urutan langkah-langkah ini:

ssh me@host1
ssh me@host2
sudo su otheruser

Saya sudah:

  • kunci ssh di laptop saya yang memungkinkan saya melakukannya ssh me@host1
  • kunci ssh pada host1 yang memungkinkan saya melakukannya ssh me@host2.

Saya tidak punya izin untuk ssh otheruser@host2.

Tujuan saya adalah: dapatkah saya mengotomatiskan ini? Lebih disukai di file ~ / .ssh / config laptop saya, jadi saya cukup melakukan:

ssh otheruser

... dan biarkan konfigurasi menangani detailnya, idealnya termasuk sandi?

Saya sudah bisa mendapatkan 2/3 dari jalan ke sana dengan konfigurasi ssh berikut:

Host host1
HostName host1.example.com

Host host2
HostName host2.example.com

Host mostly_there
HostName host2.example.com
ProxyJump host1 host2

Hal di atas memungkinkan saya untuk melakukannya, ssh mostly_theretetapi saya masih harus melakukannya sudo su otheruser.

Jawaban

1 jeb Oct 20 2020 at 06:17

Anda dapat menggunakan ini di .ssh / config:

HOST host1
  user me

HOST host2
    USER me
    ProxyCommand ssh host1 -W %h:%p

HOST otheruser
    USER me
    ProxyCommand ssh host1 -W %h:%p
    RemoteCommand sudo su -c '/bin/bash -i' otheruser

Untuk terhubung ke host2 dengan pengguna pengguna lain cukup gunakan:

ssh otheruser

Saat ini ada kekurangannya, bahwa ini bukan shell interaktif penuh, tapi itu bisa diperbaiki dengan pemanggilan yang lebih baik daripada /bin/bash -i

ArkadiuszDrabczyk Oct 16 2020 at 18:10

Jika Anda memiliki root, Anda dapat menggunakan kunci publik Anda ke otheruserauthorized_keys dan login tanpa menggunakan kata sandi. Setelah beralih untuk otherusermelakukan ini:

mkdir -p ~/.ssh

dan masukkan kunci publik Anda ke ~ / .ssh / authorized_keys. Sekarang Anda seharusnya dapat masuk dari jarak jauh otheruserhanya dengan melakukan ssh otheruser@host.