Je sais comment me connecter 'à' un certain port en utilisant ssh.
ssh user@remotehostip -p XXX
Existe-t-il un moyen d'établir ssh from le port que mon ordinateur local utilisera?
Ce n'est pas facilement possible. Comment cela peut être fait dépend de l'endroit où le port source doit être vu: localement aussi, ou est-ce suffisant si c'est le bon port du point de vue du réseau externe?
Vous pouvez exécuter le client SSH dans un conteneur LXC. Je n'ai jamais fait cela donc je ne peux pas vous l'expliquer en détail. Mais vous créez une interface réseau virtuelle et la joignez à ce conteneur afin que ssh
utilise cette interface car c'est la seule interface (externe) qu'il voit.
Sur le système hôte, il devrait être possible de détecter qu'un paquet provient de cette interface. Ainsi, vous pouvez utiliser NAT (SNAT) de Netfilter pour réécrire l'adresse source avec quelque chose comme:
iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234
Bien sûr, cela ne fonctionne pas (ou devient plus compliqué) si vous vous connectez à des ports différents de 22.
La syntaxe de commande que vous recherchez est peut-être celle-ci. ssh -p XXX user @ remotehostip Vous devez changer l'ordre des options. Essayez-le maintenant, cela fonctionne pour moi. Meilleures salutations.
Une solution simple pour cela si vous transférez des ports via votre routeur est de définir le port entrant sur ce que vous voulez et le port local sur 22. Votre machine utilisera toujours la connexion ssh sur 22 comme d'habitude, mais pour se connecter depuis l'extérieur de votre réseau vous utiliseriez votre port entrant. Si vous essayez simplement d'empêcher les robots de marteler votre machine sur 22, cela devrait le faire.
Cela pourrait ne pas aider votre problème spécifique, mais j'imagine que beaucoup de gens se retrouvent ici pour cette raison.
J'ai proposé une option -Z portnum ...
Source ici: https://github.com/Zibri/openssh-portable
Et voici la demande de pull: https://github.com/openssh/openssh-portable/pull/1