Bagaimana SSH pada port selain 22

151

Saya memiliki dua komputer di belakang router yang sama. Sebut mereka A dan B.

A kaleng SSH ke B dengan cara berikut: ssh usr@<internal ip of computer>

B dapat SSH ke A dengan melakukan hal yang sama, tetapi IP eksternal harus digunakan. Saya telah meneruskan port 22 dari router saya ke IP komputer A, sehingga semuanya masuk akal bagi saya.

Namun, saya juga ingin meneruskan port 26 ke komputer B, dan SSH dari luar jaringan dengan menggunakan IP eksternal untuk keduanya, tetapi menentukan port 22 atau 26, untuk secara efektif memilih komputer mana yang akan digunakan.

Saya telah mencoba mengizinkan port 26 melalui OUTPUT iptablespada A dan INPUT dari B, tapi itu sepertinya tidak berhasil. Saya juga telah meneruskan port 26 ke IP internal B (melalui router), seperti yang saya lakukan dengan 22 untuk A.

Inilah yang saya dapatkan ketika saya mencoba SSH dari A ke B menggunakan IP eksternal dan port 26:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

Versi:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
  • B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 Mei 2012

A memiliki 12,04 Ubuntu, B adalah Raspberry Pi dengan Raspbian.

EDIT: Sesuatu yang saya lupa masukkan: Saya memang mencoba mengganti file konfigurasi SSH (saya menemukan itu /etc/ssh/ssh_config) Saya membatalkan komentar (menghapus #) baris dengan Portdan berubah 22menjadi 26. Itu memberi saya koneksi masih menolak pesan. (Saya reboot tanpa hasil.)

Gary
sumber
Apakah Anda membuat SSH berjalan pada port 22 atau 26 pada mesin kedua?
Nerdfest
1
Perhatikan bahwa / etc / ssh / ssh_config adalah konfigurasi klien ssh. Di mana / etc / ssh / sshd_config adalah konfigurasi daemon ssh.
steakunderscore

Jawaban:

45

Sepertinya Anda tidak menjalankan SSH pada port 26 di mesin kedua. Anda dapat mengubah nomor port pada mesin itu menjadi 26.

Edit /etc/ssh/sshd_config& jangan lupa untuk me-restart SSH atau membiarkannya pada 22, tetapi teruskan port 26 pada router ke port 22 pada mesin kedua. Juga, jangan lupa untuk mengubah pengaturan firewall pada mesin kedua untuk memungkinkan koneksi melalui.

Nerdfest
sumber
Ahhh ... jadi sshd_config harus berubah, bukan ssh_config?
Gary
2
Benar. sshd adalah layanan (d adalah untuk daemon). Edit file konfigurasi (dengan sudo gedit), lalu mulai ulang layanan dengan "sudo service ssh restart".
Nerdfest
2
Memecahkan masalah. Tidak harus mengubah pengaturan firewall apa pun.
Gary
372

Jika Anda menggunakan sistem Linux dan Anda ingin terhubung ke server SSH pada port 26 Anda dapat menggunakan perintah berikut.

ssh [email protected] -p 26

catatan:

  1. Ganti IP server dengan Alamat IP atau nama DNS server Anda.
  2. Ubah nomor port Anda seperti yang telah Anda tetapkan.
  3. jika Anda menggunakan SSH port khusus maka port yang sama paling diijinkan untuk koneksi outbound, inbound pada firewall jika tidak koneksi tidak akan membangun
Shiv Singh
sumber
17
Yang ini harus ditandai sebagai benar.
ken_oy
1
Saya setuju ini jawaban yang benar. Yang ini sederhana dan langsung ke intinya.
m4l490n
1
@gary tandai yang ini benar
puisi kesedihan
7
Tidak, ini BUKAN jawaban yang benar. OP mengalami masalah dengan daemon yang tidak mendengarkan pada port yang diinginkan. Dia jelas meminta bantuan dengan server SSH dan / atau konfigurasi NAT, tetapi jawaban saat ini mengabaikan posting asli dan menjelaskan opsi perintah klien yang sudah diketahui OP. Saya bertanya-tanya bagaimana jawaban ini mendapat begitu banyak upvotes.
nnovich-OK
2
Ini benar untuk mayoritas, tetapi ini tidak benar untuk masalah OP.
Ultrasonic54321
9

Saya menggunakan port 22 hanya untuk akses ssh intranet.

Untuk akses melalui internet saya menggunakan port khusus (tidak biasa). Ini memiliki manfaat, saya mengurangi beban yang dihasilkan oleh skrip anak-anak yang memindai port 22 untuk "nama pengguna yang terkenal".

Proses sshd eksternal dikendalikan oleh xinetddan berjalan secara paralel dengan proses internal sshd . Dalam contoh berikut ini saya menggunakan port 12345:

Anda bebas mengubah ini ke nomor port gratis yang tersedia di sistem Anda. Mungkin nilai yang lebih tinggi akan membuatnya juga sedikit lebih tidak mungkin bahwa port ini dipindai oleh "pemindaian porta cepat" .

The xinetdkonfigurasi:

service ssh-external
{
    socket_type = stream
    wait = no
    protocol = tcp
    type = UNLISTED
    user = root
    server = /usr/sbin/sshd
    server_args = -i -f  /etc/ssh/external-sshd.config
    port = 12345
    log_on_failure += USERID
}

File /etc/ssh/external-ssdh.configdapat berupa salinan dari sshdkonfigurasi Anda yang biasa . Pastikan bahwa pernyataan berikut dikonfigurasi:

Port 12345
AddressFamily inet

Saya juga menyarankan untuk menerapkan otentikasi kunci publik dan menonaktifkan otentikasi kata sandi untuk akses internet:

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
H.-Dirk Schmitt
sumber
7

Dengarkan port juga bisa sulit ditautkan ke alamat IP

/ etc / ssh / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
OasisInDesert
sumber
ini harus berupa komentar, bukan jawaban.
Pablo Pazos
1

Seperti yang telah saya jelaskan dalam jawaban terkait , ssh client memungkinkan menentukan format URI sebagai ssh://user@host:1234. Sebagai contoh:

ssh  ssh://[email protected]:2222

di mana 2222 adalah nomor port. Ganti nomor port yang ingin Anda gunakan. Tentu saja, ingat bahwa untuk terhubung ke server ssh port yang ditentukan (pada host yang Anda coba sambungkan) harus mendengarkan pada port yang ditentukan di tempat pertama.

Sergiy Kolodyazhnyy
sumber
0

Bukan ide yang baik untuk menjalankan ssh pada port default (TCP / 22), tidak meneruskan dari WAN IP 22 ke port apa pun yang menggunakan ssh-server pada LAN IP.

Dalam pengertian yang lebih umum untuk terhubung ke layanan ssh-server harus mendengarkan pada port itu. Kamu harus

  1. Edit pada /etc/ssh/sshd_config( catat d ) dari #Port 22hingga Port 26. Yaitu, batalkan komentar dan ubah port. Mungkin lebih baik daripada 26 akan menjadi sesuatu yang acak di atas , seperti 42.895.
  2. Mulai kembali layanan ssh-server

    sudo systemctl restart sshd.service
    

Kemudian dari ssh-client Anda akan dapat terhubung

ssh user@serverNameOrIP -p 42895

Bonus: mosh

Jika paket mosh diinstal pada server Anda kemudian gunakan

mosh --ssh="ssh -p 42895" serverNameOrIP
Pablo A
sumber