Как настроить ярлык для соединения SSH через туннель SSH

Если Вы уверены, что пароль, который вводит удаленный пользователь, соответствует тому, который был создан, то две вещи возможны: (1) при создании входа в систему DBA, выбранный для Осуществления истечения пароля и/или (2) выбранный пользователь должен изменить пароль при следующем входе в систему.

Разрешение = Отбрасывание и воссоздает вход в систему w/o выбирающий любую опцию выше.

Другая проблема может быть то, что вход в систему не имеет прав, связанных с базой данных по умолчанию, которая он был присвоен. Проверьте, чтобы видеть, существует ли пользователь в той базе данных, которая отображается на рассматриваемый вход в систему.

Разрешение = отображает пользователя в дб назад к входу в систему сервера.

22
задан 10 September 2012 в 00:17
8 ответов

Как более конкретная версия ответа Kyle, что Вы хотите вставить Ваш ~/.ssh/config файл:

host foo
  User webby
  ProxyCommand ssh a nc -w 3 %h %p

host a
  User johndoe

Затем при выполнении "ssh нечто" SSH попытается к SSH к johndoe@a, выполненный netcat (nc), затем выполните SSH к webby@foo через этот туннель. Волшебство!

Конечно, чтобы сделать, это, netcat должно быть установлено на сервере шлюза; этот пакет доступен для каждого основного распределения и ОС.

36
ответ дан 28 November 2019 в 20:22
  • 1
    Отлично! Я пытался понять это, я никогда не сталкивался с той точной ситуацией прежде. Я сохраню свой ответ там, в случае, если он мог бы помочь кому-то еще с менее определенной ситуацией в будущем. –  Kyle Brandt 1 August 2009 в 16:38
  • 2
    I' ve обновил мой исходный вопрос включая подробный вывод моего соединения. Это кажется мной can' t используют netcat. Это должно быть доступно по умолчанию? –  Simone Carletti 1 August 2009 в 19:36
  • 3
    Не всегда, Вы имеете право устанавливать его? Вы смогли делать это с telnet также, я никогда не пробовал это... –  Kyle Brandt 1 August 2009 в 19:48
  • 4
    Вы также смогли загружать netcat на свой корневой каталог и компилировать его там. Вы могли затем просто использовать полный путь в команде прокси, т.е./home/userName/bin/nc –  Kyle Brandt 1 August 2009 в 19:51
  • 5
    Я просто проверил параметры настройки системы. На Ubuntu netcat, кажется, доступен по умолчанию, к сожалению, серверы шлюза приводятся в действие OpenSUSE. I' m собирающийся рассматривать установку netcat на серверах шлюза также. –  Simone Carletti 1 August 2009 в 22:35

Можно использовать директиву ProxyCommand в ~/.ssh/config файл, например, для использования netcat в качестве реле:

host server2
    ProxyCommand ssh server1 nc server2 22

Вы просто использовали бы 'ssh server2'. Информация о странице справочника для этой директивы найдена в 'человеке ssh_config'

7
ответ дан 28 November 2019 в 20:22

Я предпочитаю другой подход, который поддерживает предварительно аутентифицируемый туннель к серверу шлюза. В ~/.ssh/config:

Host a
    ControlMaster auto
    ControlPath ~/.ssh/control-master/%r@%h:%p

Затем в .bashrc:

s () {
        if ( ssh -O check a 2>&1 > /dev/null 2>&1 )
        then
                ssh -t a ssh $1
        else
                if [[ -S ~/.ssh/control-master/insyte@a:22 ]]
                then
                        echo "Deleting stale socket..."
                        rm ~/.ssh/control-master/insyte@a:22
                fi
                echo "Opening master session..."
                if ssh -Nf a
                then
                         ssh -t a ssh $1
                fi
        fi
 }

Таким образом соединяться с нечто:

s foo

В первый раз, когда Вы соединяетесь, это будет аутентифицировать Вас против "a" и открывать персистентное, фон ssh туннель. Последующие вызовы к "s" откроются почти мгновенно через туннель pre-authed.

Работает отлично.

5
ответ дан 28 November 2019 в 20:22

Это может быть выполнено путем выполнения ssh -At johndoe@a ssh webby@foo. -A управляйте форвардами Ваш ssh агент (таким образом, можно избежать необходимости повторно проходить проверку подлинности на прокси), в то время как -t гарантирует, что терминал существует на прокси. Следующая функция удара может быть полезной:

ssh-bounce () {
    local cmd=""
    for i in "$@"; do
        cmd+="ssh -At $i "
    done
    $cmd
}
2
ответ дан 28 November 2019 в 20:22
weppos:~ weppos$ ssh foo -vv
[..]
bash: nc: command not found

Netcat не установлен на a. Когда Вы работаете ssh host "command arg", command выполняется на host, не на Вашей локальной машине.

0
ответ дан 28 November 2019 в 20:22
  • 1
    Да, я знаю. Это точно, о чем я сообщил в комментарии womble' s ответ.:) –  Simone Carletti 2 August 2009 в 13:12

Этот тип функциональности существует в более новых версиях OpenSSH и может использоваться, выполнив

ssh -W server2 server1

, где server2 - ваш предполагаемый пункт назначения, а server1 - ваш прокси-сервер. Вы можете упростить это, используя параметр ProxyCommand в вашей конфигурации ssh, например:

host = *.example.com
user = packs
port = 22
ProxyCommand ssh -W %h:%p server1
2
ответ дан 28 November 2019 в 20:22

Когда netcat недоступен на прокси-сервере, попробуйте следующий трюк:

host foo
  User webby      
  ProxyCommand ssh a 'exec 3<>/dev/tcp/foo/22; cat <&3 & cat >&3;kill $!'

host a
  User johndoe

Тогда вы сможете ssh foo .

Кроме того, если у вас установлена ​​последняя версия ssh (например, с командой -W для пересылки стандартного ввода и вывода), вы можете использовать:

host foo
  User webby
  ProxyCommand ssh -W foo:%p a

host a
  User johndoe

Наконец, только потому, что я нашел это круто (и не потому, что это будет работать в вашем конкретном случае из-за различий в именах пользователей), сообщение в блоге друга указывает, как сделать такие вещи динамическими и рекурсивно связывать прокси SSH которые не работают):

host */*
  ProxyCommand ssh ${$(dirname %h)/\%%/@} nc ${$(basename %h)#*%%} %p

И затем ssh machine1 / machine2 должен предоставить вам оболочку на machine2 , туннелированную через machine1 .

Интересно, может ли использование пользовательских команд sed вместо dirname и basename не решить проблему с разными именами пользователей?

2
ответ дан 28 November 2019 в 20:22

Ukusukela kwi-OpenSSH 7.3 (2016-08-01) i ProxyJump ukhetho kunye nokuhambelana -J iflegi yomgca wokuyalela sele ifumanekile ukuvumela lula ngakumbi indirection ngeyodwa okanye nangaphezulu kwe-SSH bastions okanye "tsiba umkhosi".

Oko kususa ukuxhomekeka kumyalelo wangaphandle nc njengoko kufunyenwe kwisisombululo sikaWomble .

ssh -J johndoe@a webby@foo 

izakuseta uqhagamshelo lwe-SSH ukusuka kwindawo yakho yokusebenza ukuya kwisango lesango a njengomsebenzisi johndoe kunye netonela yeseshoni ye-SSH yokusingatha i-foo yomsebenzisi weWebby ngaphezulu koko.

Ukwenza lula ukwenza iinkcazo zokubamba kuzo zombini ~ / .ssh / config kwaye ungenza ngokulula ssh foo

Host a
    User johndoe

Host foo
    User Webby 
    ProxyJump a
0
ответ дан 28 November 2019 в 20:22

Теги

Похожие вопросы