tar -xjvf "Sublime Text 2.0.2 x64.tar.bz2"
Требуются кавычки , потому что в имени файла есть пробелы.
Если вы можете использовать SSH для подключения к корпоративному ноутбуку со своего домашнего компьютера, вы можете использовать SSH-туннелирование или SSH Jump Hosts
Существует много документации по ssh-туннелированию, но они не охватывают этот конкретный сценарий.
Итак, чтобы получить от Рабочая станция < -> Ноутбук < -> Сеть компании нам нужна дополнительная система на N, которая играет роль маршрутизатора для подключения отдельных сетей.
Нам нужна дополнительная виртуальная машина на ноутбуке с двумя сетевыми портами. Один подключен к хост-сети через NAT, другой подключен к локальной сети через мостовое соединение.
Итак, мы можем получить соединение как W < -> VM1 < -> VM2 < -> N1 < -> N2 < -> CN
Это можно настроить с помощью конфигурации ssh. Пример с некоторыми фиктивными IP-адресами.
W = 192.0.0.3 <LAN> VM1 = 192.0.0.2
VM1 = 192.0.0.2 <route> VM2 = 10.0.0.3
VM2 = 10.0.0.3 <NAT> NATRouter = 10.0.0.1
NR = 10.0.0.1 <nat2host> N1 = 20.0.0.4
N2 = 20.0.0.4 <vpnroute> CN 0.0.0.0/0
Это описание сетевых переходов между системой.
Итак, чтобы подключиться к серверу в CN, нам нужно решить 2 отдельных шага. Нам нужно настроить конфигурации ssh для промежуточных переходов. Записи.ssh/config:
# reaching the VM
Host VM
User vmuser
IdentityFile ~/.ssh/vm_id_rsa
ForwardX11 yes
# reaching a host inside the CN
Host CNhost
User companyuser
IdentityFile ~/.ssh/cnhost_id_rsa
ForwardX11 yes
ProxyCommand ssh -A vm nc %h %p 2> /dev/null
Другой важной проблемой является правильная маршрутизация внутри виртуальной машины. Маршрут к соединенной мостом локальной сети 192.0.0.0/24 должен иметь более низкую метрику, чем маршрут по умолчанию к NAT 10.0.0.1.
vm$ ip route
default via 10.0.0.1 metric 100
10.0.0.0/24 dev nat1 metric 100
192.0.0.0/24 dev bridge1 metric 99
Теперь интересен случай, когда мы также хотим получить доступ к серверу во внутренней сети, который доступен только с сервера, уже находящегося в сети компании. Классическая конфигурация JumpHost. Для этого нам нужна еще одна запись.ssh/config
# reaching a host on a CN internal network
Host CNInternalhost
User cnInternalUser
IdentityFile ~/.ssh/cninternalhost_id_rsa
ForwardX11 yes
ProxyCommand ssh -A CNhost nc %h %p 2> /dev/null
Теперь мы можем просто подключиться к CNInternalhost по ssh.
В противном случае необходимо проверить таблицы маршрутизации. (напр. отсутствующие маршруты или неверные метрики)
Но мы также хотим получить доступ к сервису на этом внутреннем хосте напрямую с нашей локальной рабочей станции!
Для этого теперь мы создаем туннель, используя переходы, предварительно настроенные в.ssh/config
ssh -L <portOnLocalhost>:CNInternalhost:<portOnCNInternalHost> CNhost
Теперь мы можем получить доступ к CNInternalhost :< portOnCNInternalHost > на локальном хосте :< portOnLocalhost >
Если мы хотим повторно использовать дополнительное сетевое имя (ServerX )в нашей локальной настройке,мы можем добавить псевдоним хоста на наш локальный хост для IP-адреса нашей локальной сети и создать для него дополнительный туннель.
echo 192.0.0.3 ServerX >> /etc/hosts
Для этого также требуется дополнительная запись.ssh/config:
# configuring another host on the CN internal network
Host serverX
User cnInternalUser
IdentityFile ~/.ssh/serverX_id_rsa
ForwardX11 yes
ProxyCommand ssh -A CNhost nc %h %p 2> /dev/null
с помощью этой конфигурации ssh мы теперь можем создать такой туннель
ssh -L serverX:<portOnLocalhost>:serverX:<portOnLocalhost> CNhost
пока serverX доступен с CNhost.
И мы можем сделать:
$ wget serverX:<portOnLocalhost>