spesso devo scaricare un file che non è direttamente accessibile tramite la prima connessione SSH. Ad esempio, sono su una macchina Windows e voglio accedere a un'altra macchina accessibile solo da lan. Ciò significa che devo prima connettermi a una macchina intermedia e SSH a quella successiva.
Sarebbe facile usare pscp per ottenere il file, se fosse disponibile per la prima macchina. È possibile utilizzare il port forwarding SSH in questo scenario?
Risposta accettata:
Sì, in questo caso è possibile utilizzare il port forwarding SSH, ma è anche possibile ricevere avvisi su chiavi host non valide o errate quando si tenta di farlo. Alcuni client SSH come OpenSSH tengono traccia delle chiavi host SSH per dominio o solo IP e non includono il numero di porta con esso. PuTTY sembra registrare il numero di porta con la chiave host e non dovrebbe soffrire di questo problema fintanto che sei coerente con i numeri di porta che usi per ciascun host. Consiglierei di aggiungere i port forwarding a una sessione salvata in PuTTY. È inoltre possibile salvare le sessioni aggiuntive per i vari host remoti come sessioni salvate e utilizzarle con pscp/psftp. Puoi iniziare con qualsiasi porta ad alto numero per l'inoltro come 2220 e aumentare di uno da lì per ogni host che devi inoltrare attraverso un host intermedio. Aggiungi alla sessione salvata per intermediate
port forwarding locale come la porta 2220
e destinazione remote1:22
e porta 2221
con destinazione remote2:22
per host remoti remote1
e remote2
Quindi crea sessioni per remote1
con destinazione localhost
e porta SSH 2220
e una sessione per remote2
con destinazione localhost
e porta SSH 2221
. Per usare sessioni con pcsp/psftp usa @session-name
per l'host.
Il problema si verifica quando hai in qualche modo associato una chiave host SSH a localhost e tenti di connetterti a una porta locale che viene inoltrata a un computer diverso. Con OpenSSH, ho risolto questo problema utilizzando HostKeyAlias
. Ho aggiunto voci al mio ~/.ssh/config
così:
Host intermediate
HostName intermediate.example.org
LocalForward 2220 remote1.example.org:22
LocalForward 2222 remote2.example.org:22
Host remote1
HostName localhost
Port 2220
HostKeyAlias remote1.example.org
Host remote2
HostName localhost
Port 2221
HostKeyAlias remote2.example.org
La mia soluzione preferita, tuttavia, è stata quando ho implementato IPv6 sulla mia rete domestica e di lavoro e non ho più dovuto preoccuparmi di connettermi a un server intermedio prima di raggiungere la mia destinazione finale.
Relazionato:Linux - Qualche serio rischio se Mint 17 pensa che sia Ubuntu?