SSH'yi her seferinde sadece port 22'yi değil, ikincil portu denemek için nasıl ayarlayabilirim?


9

Günlüklerdeki gürültüyü azaltma ve bulunabilirliği hafifçe azaltma çabamın bir parçası olarak (ve fail2ban'ın üstünde, yalnızca ortak anahtar kimlik doğrulamasına izin veren vb.) Farklı bir bağlantı noktasına kurduğum sunuculardaki sshd bağlantı noktalarını rutin olarak değiştiriyorum, diyelim ki 5492. Ben de ekleme -p 5492 benim ssh komutuna ya gözlerimin içine her bir spesifik sunucunun bağlantı noktasını ekleyin ssh_config.

Bağlantı noktası 22 çalışmazsa ssh'yi hem bağlantı noktası 22'ye hem de bağlantı noktası 5492'ye bağlanmaya çalışacak şekilde yapılandırmanın bir yolu var mı?


1
Belirsizlik yoluyla güvenliğe sahip olmak, bir VPN kurmak ve internete hiç açık ssh portları olmamayı tercih ederim.
Rui F Ribeiro

2
@RuiFRibeiro Kabul ediyorum, daha güvenli değil. Ancak günlük dosyalarında gürültüyü azaltır. Ayrıca, güvenliği arttıran giriş denemelerini azaltmak için bağlantı noktası vurma da kullanılabilir.
Ned64

2
@RuiFRibeiro Bir VPN sunucusu bir SSH sunucusundan daha güvenli mi?
Riley

Her şey uygulamaya bağlıdır. Eski işimde, fazlalık için 2 VPN girişi tanımladım sshve dışarıda hiçbir şekilde bulunmadım.
Rui F Ribeiro

2
Belirsiz güvenlik, özellikle fırsatçı saldırganlar söz konusu olduğunda, iyi bir düzeneğin üstünde iyi bir İLAVE katmandır.
rackandboneman

Yanıtlar:


11

Bir kabuk komut dosyasını etrafına sarabilirsiniz, sshancak sshkendisi bunu yapmaz.

Bir bash işlevi kullanmanın bir yolu şudur ~/.bashrc:

function ssh() { command ssh -p 22 "$@" || command ssh -p 5492 "$@"; }

Bu arada, kullanıcıların örneğin 5492 numaralı bağlantı noktasını dinleyen bir işlem yapmasını önlemek için sistem hizmetleri için rootkorunmuş bağlantı noktalarının kullanılması önerilir. sshAksi takdirde, ortada insanı oynatabilir ve muhtemelen giriş verilerini yakalayabilirler. Bu nedenle, <1024 bağlantı noktasını kullanın.


1
Bu harika bir çözüm. Ayrıca limanlarda büyük bir not!
Riley

5
İkinci bağlantı geldiğini hatırlatırız yapılacaktır komut tarafından yürütülen eğer ilki başarılı olsa da sshgetiri sıfırdan. Önemsiz bir örnek olurdu ssh user@server false.
Kusalananda

1
@Kusalananda Teşekkürler, commandşimdi yazdım . Doğru tahmin ettiğiniz gibi sadece özyinelemeden kaçınmak istedim.
Ned64

@Kusalananda'nın bahsettiği sorun (çoğunlukla) özel çıkış durumunu test ederek önlenebilir ssh- bir ssh hatası varsa (uzaktan komutun başarısız olmasının aksine), 255 durumuyla çıkacaktır command ssh -p 22 "$@"; if [ "$?" -eq 255 ]; then command ssh -p 5492 "$@"; fi. Bu nedenle çalışmalıdır.
Gordon Davisson

10

sshdokümantasyon örneklerde biraz seyrek olmasına rağmen kendisi bunu Matchbelgelenmiş olarak yapabilir ssh_config(5). Bu form, ssh_config(5)sözdiziminin sınırlamaları ile sınırlı olsa da, karmaşıklığı SSH konfigürasyonuna itmek isterse uygun olabilir ve istenen sonuç için biraz uğraşmayı gerektirebilir. Özellikle, özel bağlantı noktası ayarlanamaz veya önceki Matchdenemeden yanlış şekilde ayarlanabilir . Bu nedenle, aşağıda test edildiğinde iki kez veya varsayılan için bir kez ayarlanmıştır ve standart varsayılanlar oluşturulurken ayarlanmamıştır.

# here we set the defaults for the host (no port!)
Match !canonical host testhost
  CanonicalizeHostname yes
  Hostname 192.0.2.42
  IdentityFile ~/.ssh/id_blahblah
  ...
# port available?
Match canonical host 192.0.2.42 exec "is-ssh-up %h 2222"
  Port 2222
# or the default port
Match canonical host 192.0.2.42
  Port 22

is-ssh-up yalnızca verilen bağlantı noktasında bir şeyin yanıt verip vermediğini kontrol eder ve

#!/usr/bin/env expect
package require Tcl 8.5
if {[llength $argv] < 2} {
   puts stderr "Usage: is-ssh-up host port"
   exit 1
}
puts stderr "is-ssh-up: DEBUG trying $argv"
set socket [socket -async [lindex $argv 0] [lindex $argv 1]]
chan event $socket readable [list exit 0]
after 3000 [list exit 1]
vwait godot

1
.ssh / config dosyasında if-then-else? Ben inanmak olmazdı!
Archemar

1

~.ssh/configBu girişi listenize koyarak , joker karakter işlevini kullanabilirsiniz :

Host *
Port 5492

Ama bu tek başına 22'ye düşmeyecek.

Sonuna koyarsanız, üstüne farklı bir değer koyarak 22'ye ihtiyacınız varsa bu ana bilgisayarlar için yine de geçersiz kılabilirsiniz. (Ve her zaman komut satırında geçersiz kılabilirsiniz.)

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.