22'den başka bir portta SSH nasıl yapılır


151

Aynı yönlendiricinin arkasında iki bilgisayarım var. Onlara A ve B diyelim.

A aşağıdaki şekilde SSH-B olabilir: ssh usr@<internal ip of computer>

B aynısını yaparak SSH'yi A'ya yapabilir, ancak harici IP kullanılmalıdır. Yönlendiricimin 22 numaralı bağlantı noktasını A bilgisayarının IP'sine ilettim, böylece her şey bana mantıklı geliyor.

Bununla birlikte, 26 numaralı bağlantı noktasını B bilgisayarına ve SSH'yi de harici IP kullanarak her ikisinin de kullanabileceğini etkin biçimde seçmek için dış IP'yi kullanarak iletmek istiyorum.

26 numaralı bağlantı noktasının iptablesA ve GİRİŞ B'nin ÇIKIŞI üzerinden geçmesine izin vermeyi denedim , ancak bu işe yaramadı. Ayrıca, bağlantı noktası 26'yı, A için 22 ile yaptığım gibi, B'nin dahili IP'sine (yönlendirici aracılığıyla) yönlendirdim.

Harici IP'yi ve 26 numaralı bağlantı noktasını kullanarak A'dan B'ye SSH'ye çalıştığımda şunu alıyorum:

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

sürümleri:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mart 2012
  • B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 Mayıs 2012

12.04 Ubuntu olan B, Raspbian'lı bir Ahududu Pi'dir.

DÜZENLEME: SSH yapılandırma dosyası (ben öyle buldum geçmeyi deneyin vermedi: Ben koymayı unutmuş bir şey /etc/ssh/ssh_config(silindi) ı uncommented #) ile çizgi Portve değiştirilemez 22için 26. Bana hala bağlantıyı reddetti mesajı verdi. (Ben boşuna hiç yeniden başlattım.)


İkinci makinede 22 veya 26 numaralı bağlantı noktasında SSH kullanıyor musunuz?
Nerdfest

1
Not etc / ssh / ssh_config / ssh istemcisi yapılandırma olduğunu. Nerede / etc / ssh / sshd_config ise ssh daemon config.
steakunderscore

Yanıtlar:


45

İkinci makinede bağlantı noktası 26'da SSH kullanmıyorsunuz gibi görünüyor. Bu makinedeki port numarasını 26 olarak değiştirebilirsiniz.

Düzenleyin /etc/ssh/sshd_configve SSH'yi yeniden başlatmayı unutmayın veya 22'de bırakın, ancak yönlendirici üzerindeki 26 numaralı bağlantı noktasını ikinci makinedeki 22 numaralı bağlantı noktasına iletin. Ayrıca, bağlantıların yapılabilmesi için ikinci makinedeki güvenlik duvarı ayarlarını değiştirmeyi unutmayın.


Ahhh ... yani sshd_config değişmeli, ssh_config değil mi?
Gary

2
Doğru. sshd servisidir (d daemon içindir). Config dosyasını düzenleyin (sudo gedit ile), sonra servisi "sudo service ssh restart" ile yeniden başlatın.
Nerdfest

2
Sorunu çözdüm. Güvenlik duvarı ayarlarını da değiştirmek zorunda kalmadı.
Gary

371

Linux sistemindeyseniz ve 26 numaralı bağlantı noktasındaki bir SSH sunucusuna bağlanmak istiyorsanız, aşağıdaki komutu kullanabilirsiniz.

ssh user@192.168.1.1 -p 26

Not:

  1. Sunucu IP'sini sunucunuzun IP Adresi veya DNS adı ile değiştirin.
  2. Belirlediğiniz gibi port numaranızı değiştirin.
  3. Özel bağlantı noktası SSH kullanıyorsanız, güvenlik duvarında gelen ve gelen bağlantı için çoğu aynı bağlantı noktasına izin verilir, aksi takdirde bağlantı kurulmaz.

17
Bu doğru olarak işaretlenmelidir.
ken_oy

1
Bunun doğru cevap olduğuna katılıyorum. Bu basit ve konuya giriyor.
m4l490n

1
@gary bunu doğru olarak işaretle
keder şiiri

7
Hayır bu doğru cevap DEĞİLDİR. OP, istenen portu dinlemeyen daemon ile ilgili sorun yaşadı. Açıkça SSH sunucusu ve / veya NAT konfigürasyonu ile ilgili yardım istedi, ancak mevcut cevap orijinal yazıyı görmezden geldi ve OP tarafından zaten bilinen istemci komut seçeneğini açıkladı. Bu cevabın nasıl bu kadar çok oy aldığını merak ediyorum.
nnovich-OK

2
Bu çoğunluk için doğru, ancak bu OP'nin sorunu için doğru değil.
Ultrasonic54321

9

22 numaralı bağlantı noktasını yalnızca intranet ssh erişimi için kullanıyorum.

İnternet üzerinden erişim için özel (sıra dışı) bir bağlantı noktası kullanıyorum. Bu, "tanınmış kullanıcı adları" için 22 numaralı bağlantı noktasını tarayan senaryo çocukları tarafından üretilen yükü azaltmamın yararına sahiptir.

Dış sshd'yi işlemler ile kontrol edilir xinetdve paralel uzanan , iç sshd işlemi. Aşağıdaki örnekte 12345 portunu kullanıyorum:

Bunu, sisteminizde mevcut herhangi bir boş port numarasına çevirmekte özgürsünüz. Belki de daha yüksek bir değer, bu portun "hızlı port taraması" ile taranması ihtimalini de biraz düşürecektir .

xinetdYapılandırmasıdır:

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
}

Dosya /etc/ssh/external-ssdh.config, normal sshdyapılandırmanızın bir kopyası olabilir . Aşağıdaki ifadelerin yapılandırıldığından emin olun:

Port 12345
AddressFamily inet

Ayrıca, genel anahtar kimlik doğrulamasını zorlamanızı ve internet erişimi için parola doğrulamasını devre dışı bırakmanızı öneririm:

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

7

Dinleme bağlantı noktalarının IP adreslerine bağlanması da zor olabilir

/ Etc / SSH / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444

bu bir cevap değil bir yorum olmalıdır.
Pablo Pazos

1

İlgili bir cevapta açıkladığım gibi , ssh istemcisi URI biçimini şu şekilde belirtmeyi sağlar ssh://user@host:1234. Örneğin:

ssh  ssh://myuser@mydomain.com:2222

buradaki 2222, liman numarasıdır. Kullanmayı düşündüğünüz port numarasını değiştirin. Tabii ki, belirtilen bağlantı noktası ssh sunucusuna bağlanmak için (bağlanmaya çalıştığınız ana bilgisayarda), ilk önce belirtilen bağlantı noktasını dinlemek zorunda olduğunu unutmayın.


0

Ssh'yi varsayılan bağlantı noktasında (TCP / 22) çalıştırmak, ne WAN IP 22'den, ne de bağlantı noktasını LAN IP'sinde ssh-server kullanıyorsanız kullanmak iyi bir fikir değildir.

Daha genel anlamda, ssh-server servisine bağlanmak için o porttan dinliyor olmalısınız. Yapman gerek

  1. Üzerinde düzenleme /etc/ssh/sshd_config( not d itibaren) #Port 22için Port 26. Yani, rahatsız etmeyin ve limanı değiştirin. Belki 26'dan daha iyi , 42895 gibi rastgele yukarıda bir şey olurdu .
  2. Ssh-server hizmetini yeniden başlat

    sudo systemctl restart sshd.service
    

O zaman ssh-client cihazından bağlanabileceksiniz

ssh user@serverNameOrIP -p 42895

Bonus: mosh

Eğer mosh paketi sunucuya kurulursa, o zaman

mosh --ssh="ssh -p 42895" serverNameOrIP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.