Jika saya mengubah port SSH saya dari 22 ke 23453, saya tidak bisa lagi ssh in.
Secara lebih rinci, saya menggunakan contoh Red Hat EC2 di Amazon Web Services. Ini adalah perubahan kedua yang telah saya instal baru (perubahan pertama adalah menambahkan pengguna non-root).
Saya dapat ssh di baik menggunakan Git Bash dan file .ssh / config lokal, saya mengedit baris di / etc / ssh / sshd_config yang saat ini mengatakan
#Port 23453
untuk mengatakan
Port 23453
kemudian mulai kembali sshd dengan
sudo service sshd restart
Saya kemudian menambahkan baris "Port 23453" file .ssh / config saya
Host foo
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key
Jika saya membuka shell Git Bash lain (tanpa menutup koneksi saya yang ada) dan mencoba ssh ke instance saya (dengan ssh foo) saya melihat kesalahan berikut:
ssh: connect to host my-ec2-public-DNS port 23453: Bad file number
Grup keamanan yang terlampir pada instance ini memiliki dua entri, keduanya TCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
Tebakan terbaik saya adalah bahwa port tersebut masih diblokir oleh firewall saya.
Outputnya sudo iptables -Ladalah sebagai berikut
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Yang terlihat cukup terbuka bagiku.
MEMPERBARUI
Setelah menambahkan aturan iptables
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
dan mencoba lagi, masih belum berhasil.
Output dari iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:23453
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Yang terlihat cukup terbuka. Saya tidak sepenuhnya yakin bagaimana mencari paket yang masuk atau aktivitas di pelabuhan. Tetapi output dari netstat -ntlp(sebagai root)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:56137 0.0.0.0:* LISTEN 948/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 930/rpcbind
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1012/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1224/master
tcp 0 0 0.0.0.0:23453 0.0.0.0:* LISTEN 32638/sshd
tcp 0 0 :::36139 :::* LISTEN 948/rpc.statd
tcp 0 0 :::111 :::* LISTEN 930/rpcbind
tcp 0 0 ::1:631 :::* LISTEN 1012/cupsd
tcp 0 0 :::23453 :::* LISTEN 32638/sshd
Yang menurut saya menunjukkan sshd pada 23453.
Saya telah memeriksa lagi bahwa instance memiliki port terbuka di grup keamanan (Port: 23453, Protokol: tcp, Sumber: 0.0.0.0/0)
Apa lagi yang bisa menyebabkan kegagalan untuk terhubung melalui SSH?
Bersulang
POSTMORTEM
Saya sekarang dapat terhubung. Itu aturan yang hilang di iptables. Output dari iptables -Lsekarang terlihat seperti ini:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:23453 state NEW
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables -L(ssh berfungsi) dan yang keduaiptables -L(ssh diblokir). Lihatlah urutan aturan dalam rantai INPUT (6 baris di bawah "target" pertama), mereka dibaca dari atas ke bawah, jadi di set aturan kedua, "TOLAKKAN semua" dipukul sebelum "ACCEPT tcp dpt: 23453 ". Set ketiga aturan memiliki entri MENERIMA di atas, dan karenanya sebelumnya, entri MENOLAK.