Saya perlu melakukan backup server ke komputer saya menggunakan Duplicity:
duplicity /etc sftp://[email protected]//home/backup
Sebelum ini dapat dilakukan, saya harus mengizinkan akses tanpa kata sandi dengan melakukan hal berikut:
$ ssh-keygen
$ ssh-copy-id [email protected]
$ ssh [email protected]
Pertanyaan saya adalah, bagaimana cara membatasi perintah hanya untuk transfer SFTP ini di kunci publik yang dihasilkan?
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
Dan karena saya menggunakan alamat IP dinamis, bagaimana cara mengatasi masalah "host yang hilang diketahui" setiap kali IP saya berubah?
ssh
sftp
key-authentication
account-restrictions
Pertanyaan Melimpah
sumber
sumber
Jawaban:
Ada 2 metode untuk melakukan ini.
1. - Membatasi sshd
Metode ini melibatkan pengaturan fitur SFTP dalam daemon SSH Anda
sshd
,. Ini dikendalikan melalui/etc/ssh/sshd_config
file konfigurasi. CATATAN: Ini akan membatasi pengguna,backup
hanya diizinkan untuk SFTP ke server.2. - Membatasi melalui otor_keys
Metode ini tidak melibatkan perubahan apa pun pada
sshd_config
file. Anda dapat membatasi pengguna + kunci SSH untuk satu perintah melaluicommand=
fitur yang telah Anda sebutkan dalam pertanyaan Anda. Caranya ada pada perintah apa yang Anda sertakan. Anda dapat menempatkan server SFTP dicommand=
baris ini , yang memiliki efek yang sama dengan menyiapkan server SFTP disshd_config
file Anda .CATATAN: jika pengguna memiliki akses tulis
~/.ssh/authorized_keys
, mereka dapat membaca dan / atau memodifikasinya. Sebagai contoh, mereka dapat mengunduhnya, mengeditnya, dan mengunggahnya kembali dengan menghapusnyacommmand=...
, memberinya akses perintah yang tidak dibatasi, termasuk shell. Jika pengguna memiliki akses tulis~/.ssh
, mereka juga dapat dengan mudah memutuskan tautan dan membuat ulang file, atauchmod
menulis akses. Banyak solusi yang mungkin ada, seperti meletakkan~/.ssh/authorized_keys
file di tempat yang tidak dapat ditulis pengguna, seperti dengan:Ini lebih sulit tetapi bisa dilakukan menggunakan
from=
fitur di dalamauthorized_keys
file juga. Di sini kami membatasi akses hanya dari hostsomehost.dyndns.org
,.Pengaturan tambahan setelah
command=
sama pentingnya, karena mereka akan membatasi penggunaan kunci SSH lebih jauh.gangguan fitur
from='hostname1,hostname2,''
- Membatasi akses dari pola IP atau nama host yang ditentukancommand='command'
- Menjalankan perintah yang ditentukan setelah otentikasino-pty
- Tidak mengalokasikan pty (tidak mengizinkan login interaktif)no-port-forwarding
- Tidak memungkinkan penerusan portno-X11-forwarding
- pengguna tidak akan dapat menghapus tampilan GUI X11no-agent-forwarding
- pengguna tidak akan dapat meneruskan melalui host ini ke host internal lainnyaUntuk menghilangkan pesan tentang "host yang hilang yang diketahui", Anda dapat menambahkan opsi SSH ini ke klien ketika terhubung seperti:
Lihat halaman manual,
ssh_config
untuk detail lengkap tentang sakelar ini.Membatasi shell pengguna
Untuk kedua solusi di atas, Anda mungkin ingin mengunci
backup
pengguna dengan membatasi shell pengguna ini di/etc/passwd
file juga. Biasanya Anda ingin mengaturnyascponly
, tetapi ada pilihan lain untuk ini. Lihat U&L Q&A ini berjudul: " Apakah Anda memerlukan shell untuk SCP? " Untuk cara melakukan ini.Penggunaan
/sbin/nologin
juga dapat digunakan jika Anda memilih untuk menggunakan fitur chroot darisshd_config
sebagaimana diuraikan dalam # 1 di atas. Namun jika Anda memilih untuk menggunakan metode yang diuraikan dalam # 2 , maka Anda kemungkinan harus menggunakanscponly
atau sesuatu yang lain untuk shell pengguna/etc/passwd
.BONUS - Memperluas # 2 di atas
Jika Anda perlu mengekspos serangkaian perintah untuk pengguna ini, Anda juga dapat melakukan ini. Membuat script seperti begitu,
/home/backup/commands.sh
:Anda kemudian mengatur
authorized_keys
file seperti ini:The
backup
pengguna kemudian dapat menjalankan perintah ini seperti:Referensi
sumber
/sbin/nologin
akan mencegah server mengakses komputer saya dengan SFTP. Saya mencoba ini.known_hosts
file ssh-nya . Marki memberikan solusi yang benar dalam komentarnya. Thefrom
parameter dalamauthorized_keys
file di komputer saya C hanya membatasi lokasi dari mana S dapat terhubung ke C./sbin/nologin
berfungsi jika aku menggunakan perintah forceinternal-sftp
alih-alih/usr/libexec/openssh/sftp-server
yang telah kamu tentukan pada sertifikat. Saya kira ini adalah dua subsistem yang berbeda. Dan membuat direktori chroot untuk yang pertama jauh lebih mudah.Shell yang Dibatasi
Anda perlu menetapkan shell terbatas seperti scponly atau rssh.
Ketika Anda menggunakan scp atau sftp Anda terhubung ke situs jarak jauh melalui ssh dan kemudian shell jauh mengeksekusi proses scp atau proses sftp. Yang Anda butuhkan adalah shell terbatas yang hanya memungkinkan scp atau sftp untuk mengunci login.
sumber