Pertama, konfigurasikan kunci ssh Anda di gateway sehingga Anda dapat ssh ke pribadi. Kemudian pada klien Anda, buat pasangan kunci pribadi / publik terpisah yang Anda gunakan untuk mengautentikasi di gateway. Misalnya. ssh-keygen -t rsa -f id_gateway
.
Kemudian di gateway, gunakan command=
sintaks dalam file otor_keys Anda. Misalnya, entri Anda mungkin terlihat seperti ini:
command="sh -c 'ssh private ${SSH_ORIGINAL_COMMAND:-}'" ssh-rsa AAAAB3....
Cari halaman sshd untuk command="command"
untuk info lebih lanjut. Pastikan untuk menambahkan kunci id_gateway.pub ke baris ini. Kemudian di .ssh/config
pada klien Anda, tambahkan entri seperti ini:
Host private
User gateway-user
Hostname xxx.xxx.xxx.xxx
IdentitiesOnly Yes
IdentityFile ~/.ssh/id_gateway
Sekarang, dari klien Anda, Anda seharusnya bisa ssh private
dan langsung masuk. Ini bahkan berfungsi untuk scp
dan sftp
.
Kredit tambahan
Jika Anda ingin menggunakan ini untuk beberapa server, tetapi hanya ingin mengelola satu kunci publik di gateway, Anda dapat menggunakan trik berikut. sshd
secara default hanya mengizinkan variabel tertentu yang akan diterima dari lingkungan lokal. Salah satunya adalah LC_PAPER
yang jarang digunakan untuk apa pun. Jadi kita bisa menggunakannya untuk menyampaikan nama host server sebagai berikut:
Pertama, ubah entri kunci publik menjadi
command="sh -c 'ssh $LC_PAPER ${SSH_ORIGINAL_COMMAND:-}'" ssh-rsa AAAAB3...
Kemudian pada klien Anda, tambahkan fungsi ke .bashrc
file (atau shell apa pun yang Anda gunakan) yang terlihat seperti ini:
ssh_proxy() {
LC_PAPER=$1 /usr/bin/ssh $*
}
Kemudian buat alias untuk jika Anda ingin:
alias ssh=ssh_proxy
Akhirnya, tambahkan Host
bagian ke Anda .ssh/config
seperti yang ditunjukkan di atas. sebagai contoh:
Host private2
User gateway-user
Hostname xxx.xxx.xxx.xxx
IdentitiesOnly Yes
IdentityFile ~/.ssh/id_gateway
Sekarang Anda harus bisa melakukannya ssh private
dan ssh private2
hanya dengan satu kunci publik di gateway.
.ssh/config
. Anda bisa menjalankannya secara manualLC_PAPER=private ssh private
. Jika Anda menggunakanHost *
blokir di akhir.ssh/config
Anda hanya perlu 1 entri. BTW, mengapa Anda tidak bisa memiliki beberapa kunci privat / publik? Akan jauh lebih mudah.echo "$1" | cut -f1 -d":"
/ usr / bin / scp $ *} alias scp = scp_proxy