Oui, en utilisant ProxyCommand
dans votre configuration SSH.
Créez un fichier de configuration SSH dans votre répertoire de base (à moins que vous ne souhaitiez configurer ce système dans son intégralité) ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Vous pouvez maintenant accéder directement à la machine A en utilisant
ssh user@internalmachine
Notez également que vous disposez désormais d'un nom de cible d'hôte SSH unique, que vous pouvez également utiliser dans d'autres applications. Par exemple:
SCP pour copier des fichiers.
scp somefile user@internalmachine:~/
Dans vos applications graphiques:
utiliser sftp://user@internalmachine/
comme emplacement pour naviguer sur la machine.
Basé sur KDE (Dolphin): utilisation fish://user@internalmachine/
Remarques
Modifiez hostname.or.IP.address.internal.machine
et le port ( 22
) sur la machine que vous souhaitez atteindre, comme si vous le vouliez unibroker
.
Selon les versions de netcat sur l'hôte unibroker, l' -q0
option doit être omise. En ce qui concerne l'authentification; vous configurez essentiellement deux connexions SSH à partir de votre poste de travail. Cela signifie que l'hôte unibroker et l'hôte internalmachine sont vérifiés / authentifiés l'un après l'autre (pour la vérification de la paire de clés / mot de passe et la clé de l'hôte).
Explication
Cette approche de l'utilisation de ProxyCommand
et 'netcat' n'est qu'un moyen de le faire. J'aime cela, car mon client SSH parle directement à la machine cible pour que je puisse vérifier la clé de l'hôte auprès de mon client et que je puisse utiliser l'authentification de ma clé publique sans utiliser une autre clé sur le courtier.
Chacun Host
définit le début d'une nouvelle section hôte. Hostname
est le nom d'hôte ou l'adresse IP cible de cet hôte. User
est ce que vous fourniriez en tant que partie utilisateur ssh user@hostname
.
ProxyCommand
sera utilisé comme tuyau vers la machine cible. En utilisant SSH sur la première machine et en configurant directement un simple 'netcat' ( nc
) vers la cible à partir de là, il ne s'agit en fait que d'un texte en clair transmis à la machine interne par le courtier entre ceux-ci. Les -q
options sont de désactiver toute sortie (juste une préférence personnelle).
Assurez-vous que Netcat est installé sur le courtier (généralement disponible par défaut sous Ubuntu) - netcat-openbsd ou netcat-traditional .
Notez que vous utilisez toujours SSH avec le cryptage deux fois ici. Alors que le canal netcat est en texte clair, votre client SSH sur votre PC configurera un autre canal crypté avec la machine cible finale.