¿Cómo conectar ssh 'con' el puerto especificado?

56

Sé cómo conectar 'a' cierto puerto cuando ssh'ing.

ssh user@remotehostip -p XXX

pero, ¿hay alguna manera de establecer un ssh 'con' cierto puerto?

Quiero decir, ¿hay alguna forma de especificar el puerto que usará mi computadora local?

kwagjj
fuente
¿Quiso decir cambiar el puerto del servidor o el puerto de recepción del cliente? Editar: Ok, borré mi sugerencia. Favorito
Polym
Quiero especificar el puerto del cliente
kwagjj
3
@kwagjj te refieres al puerto de origen? Si es así, no, no puede controlar el puerto de origen.
Patrick

Respuestas:

15

Eso no es fácilmente posible. Cómo se puede hacer eso depende de dónde se verá el puerto de origen: también localmente, o ¿es suficiente si es el puerto correcto desde la perspectiva de la red externa?

Puede ejecutar el cliente SSH en un contenedor LXC. Nunca lo he hecho, así que no puedo explicárselo en detalle. Pero crea una interfaz de red virtual y la conecta a este contenedor para que sshuse esta interfaz porque es la única interfaz (externa) que ve.

En el sistema host, debería ser posible detectar que un paquete proviene de esta interfaz. Por lo tanto, puede usar el NAT de Netfilter (SNAT) para reescribir la dirección de origen con algo como:

iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234

Por supuesto, esto no funciona (o se vuelve más complicado) si se conecta a puertos diferentes del 22.

Hauke ​​Laging
fuente
1
gracias ... pero creo que esta información está fuera de mi alcance ... pero aún así gracias :) Pero si realmente llego a un callejón sin salida con lo que estoy haciendo ... tal vez me volveré loco responder de nuevo :)
kwagjj
Sí, es realmente difícil encontrar información sobre ese tema. Me enteré sshfsy alguien dijo que funcionaba con este comando, pero no lo creo. Si encuentra la respuesta, ¡avísenos :)!
Polym
@kwagjj Puede ser más fácil (entender) instalar un Linux completo (modo de texto) como una VM real. Si usa esta VM (o una cuenta determinada en ella) solo para SSH, puede hacerlo con VM Netfilter.
Hauke ​​Laging
6

La sintaxis de comando que está buscando quizás es esta. ssh -p XXX usuario @ remotehostip Debe cambiar el orden de las opciones. Pruébalo ahora, funciona para mí. Atentamente.

Rafael García
fuente
2

Una solución simple para esto si está reenviando puertos a través de su enrutador es configurar el puerto de entrada a lo que desee y el puerto local a 22. Su máquina seguirá teniendo conexión ssh en 22 como de costumbre pero para conectarse realmente desde fuera de su red usarías tu puerto de entrada. Si solo está tratando de evitar que los bots golpeen su máquina el 22, esto debería hacerlo.

Esto podría no ayudar a su problema específico, pero me imagino que muchas personas terminan aquí por esta razón.

Stoopkid
fuente