Thank you for reading this post, don't forget to subscribe!
SCP через прокси-сервер
Метод 1: использование scp с ProxyJump
В пакете openssh версии 7.4p1-11 или новее мы можем использовать опцию ProxyJump для передачи файлов с помощью прокси-сервера.
Синтаксис команды scp для передачи файлов через прокси :
1 |
# scp -o "ProxyJump <User>@<Proxy-Server>" <File-Name> <User>@<Destination-Server>:<Destination-Path> |
Например:
1 2 3 4 |
# scp -o "ProxyJump user@10.23.100.70" dataFile.txt user@192.168.10.100:/tmp user@10.23.100.70's password: user@192.168.10.100's password: dataFile.txt |
Где мой прокси-сервер – 10.23.100.70, а целевой сервер – 192.168.10.100.
Метод 2: использование scp с ProxyCommand
SCP использует ssh в качестве основного протокола, и, следовательно, мы можем использовать параметры ssh вместе с командами scp.
Синтаксис для использования опции ProxyCommand с командой scp:
1 |
# scp -o "ProxyCommand ssh <user>@<Proxy-Server> nc %h %p" <File-Name> <User@<Destination-Server>:<Destination-Path> |
- %h будет заменен именем хоста для подключения
- %p будет заменен портом
При использовании параметра ProxyCommand убедитесь, что пакет nmap-ncat установлен на прокси-сервере, который предоставляет команду nc, в противном случае отобразится следующее сообщение об ошибке.
123 bash: nc: command not foundssh_exchange_identification: Connection closed by remote hostlost connection
Например:
1 2 3 4 |
# scp -o "ProxyCommand ssh user@10.23.100.70 nc %h %p" dataFile.txt root@192.168.10.100:/tmp user@10.23.100.70's password: root@192.168.10.100's password: dataFile.txt 100% 5 0.0KB/s 00:00 |
SSH через прокси-сервер
Метод 1: передать ProxyCommand с использованием параметров ssh
Мы снова можем использовать ProxyCommand для входа по ssh на другой сервер с помощью прокси-сервера.
Синтаксис SSH через прокси будет следующим:
1 |
# ssh -o "ProxyCommand ssh user_name_on_proxy@hostname_or_IP_of_proxy nc %h %p" user_name_on_server@hostname_or_IP_of_server |
Пример: войти от пользователя root на 192.168.10.100 через прокси на 10.23.100.70 с учетными данными на прокси для proxy_user
1 2 3 4 5 6 7 8 |
# ssh -o "ProxyCommand ssh proxy_user@10.23.100.70 nc %h %p" root@192.168.10.100 proxy_user@10.23.100.70's password: root@192.168.10.100's password: Last login: Tue Dec 24 10:40:33 2019 from 10.23.100.70 # ip a l | grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 inet 192.168.10.100/24 brd 192.168.1.255 scope global eth0 |
Если на прокси-сервере не установлена команда nc или у вас нет учетных данных для входа на прокси-сервер, но на прокси-сервере запущена прокси-служба, такая как squid, которая будет принимать соединения SSH, вы можете использовать следующую команду.
Обратите внимание, что этот метод требует, чтобы у вас была установлена команда nc в локальной / клиентской системе.
1 |
# ssh -o "ProxyCommand nc --proxy hostname_or_IP_of_proxy:proxy_service_port --proxy-type http %h %p" user_name_on_server@hostname_or_IP_of_server |
Например, чтобы войти в систему как root на 192.168.10.100 через прокси-сервис, прослушивающий порт 3128 на 10.23.100.70.
Прокси-сервис не требует никаких учетных данных.
1 2 3 4 5 6 7 |
# ssh -o "ProxyCommand nc --proxy 10.23.100.70:3128 --proxy-type http %h %p" root@192.168.10.100 root@192.168.10.100's password: Last login: Tue Dec 24 10:40:46 2019 from 10.23.100.70 # ip a l | grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 inet 192.168.10.100/24 brd 192.168.1.255 scope global eth0 |
Метод 2: Использование файла конфигурации клиента ssh
1 2 3 4 5 6 |
# vim ~/.ssh/config ... Host <nickname> HostName <hostname_of_server> User <user_on_server> ProxyCommand ssh <user_on_server>@<proxy_server> nc %h %p |
Если в этом файле уже есть содержимое, вам нужно будет добавить указанное выше в конец файла.
- <nickname>: устанавливает алиас для целевого сервера.
- <hostname_of_sever>: устанавливает реальное имя удаленного сервера/хоста
- <user_on_server>: настоящий пользователь, который существует на целевом сервере
- <proxy_server>: IP или имя хоста прокси-сервера
- %h будет заменен именем хоста для подключения
- %p будет заменен портом
Затем вы можете использовать SSH с дополнительным подробным параметром для проверки конфигурации
1 |
# ssh -vvv <target_server> |