Tengo dos computadoras detrás del mismo enrutador. Llamémoslos A y B.
A puede SSH a B de la siguiente manera: ssh usr@<internal ip of computer>
B puede hacer SSH a A haciendo lo mismo, pero se debe usar la IP externa. He reenviado el puerto 22 de mi enrutador a la IP de la computadora A, para que todo tenga sentido para mí.
Sin embargo, también quiero reenviar el puerto 26 a la computadora B, y SSH desde fuera de la red usando la IP externa para ambos, pero especificando el puerto 22 o 26, para seleccionar efectivamente qué computadora usar.
He intentado permitir el puerto 26 a través de la SALIDA de iptables
A y la ENTRADA de B, pero eso no pareció funcionar. También he reenviado el puerto 26 a la IP interna de B (a través del enrutador), como hice con 22 para A.
Esto es lo que obtengo cuando intento SSH de A a B usando la IP externa y el puerto 26:
ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.
Versiones
- A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 de marzo de 2012
- B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 de mayo de 2012
A tiene 12.04 Ubuntu, B es una Raspberry Pi con Raspbian.
EDITAR: Algo que olvidé poner: intenté cambiar el archivo de configuración SSH (descubrí que es /etc/ssh/ssh_config
), descomenté (eliminé #
) la línea Port
y cambié 22
a 26
. Me dio el mensaje de conexión rechazada todavía. (Reinicié en vano).
fuente
Respuestas:
Parece que no estás ejecutando SSH en el puerto 26 en la segunda máquina. Puede cambiar el número de puerto en esa máquina a 26.
Edite
/etc/ssh/sshd_config
y no olvide reiniciar SSH o dejarlo en 22, pero reenvíe el puerto 26 en el enrutador al puerto 22 en la segunda máquina. Además, no olvide cambiar la configuración del firewall en la segunda máquina para permitir las conexiones.fuente
Si está en un sistema Linux y desea conectarse a un servidor SSH en el puerto 26, puede usar el siguiente comando.
Nota:
fuente
Yo uso el puerto 22 solo para el acceso ssh de intranet.
Para acceder a través de Internet, uso un puerto personalizado (inusual). Esto tiene el beneficio de reducir la carga producida por los niños de script que están escaneando el puerto 22 en busca de "nombres de usuario conocidos".
Los procesos sshd externos están controlados
xinetd
y se ejecutan en paralelo al proceso internosshd
. En el siguiente ejemplo, uso el puerto 12345:Puede cambiar esto a cualquier número de puerto libre disponible en su sistema. Tal vez un valor más alto hará que sea un poco más improbable que este puerto sea escaneado por un "escaneo de puerto rápido" .
La
xinetd
configuración es:El archivo
/etc/ssh/external-ssdh.config
puede ser una copia de susshd
configuración habitual . Asegúrese de que las siguientes declaraciones estén configuradas:También sugiero aplicar la autenticación de clave pública y deshabilitar la autenticación de contraseña para el acceso a Internet:
fuente
Los puertos de escucha también pueden estar vinculados a direcciones IP
/ etc / ssh / sshd_config:
fuente
Como he explicado en una respuesta relacionada , el cliente ssh permite especificar el formato URI como
ssh://user@host:1234
. Por ejemplo:donde 2222 es el número de puerto. Sustituya el número de puerto que pretende utilizar en su lugar. Por supuesto, recuerde que para conectarse al servidor ssh del puerto especificado (en el host al que está intentando conectarse) tiene que escuchar en el puerto especificado en primer lugar
fuente
No es una buena idea ejecutar ssh en el puerto predeterminado (TCP / 22), ni reenviar desde WAN IP 22 a cualquier puerto que use ssh-server en LAN IP.
En un sentido más general, conectarse al servicio ssh-server debería estar escuchando en ese puerto. Tienes que
/etc/ssh/sshd_config
( tenga en cuenta la d ) de#Port 22
aPort 26
. Es decir, descomentar y cambiar el puerto. Quizás mejor que 26 sería algo al azar arriba , como 42895.Reinicie el servicio ssh-server
Luego, desde ssh-client podrás conectarte
Prima:
mosh
Si el paquete mosh está instalado en el servidor, entonces usa
fuente