Если Вы уверены, что пароль, который вводит удаленный пользователь, соответствует тому, который был создан, то две вещи возможны: (1) при создании входа в систему DBA, выбранный для Осуществления истечения пароля и/или (2) выбранный пользователь должен изменить пароль при следующем входе в систему.
Разрешение = Отбрасывание и воссоздает вход в систему w/o выбирающий любую опцию выше.
Другая проблема может быть то, что вход в систему не имеет прав, связанных с базой данных по умолчанию, которая он был присвоен. Проверьте, чтобы видеть, существует ли пользователь в той базе данных, которая отображается на рассматриваемый вход в систему.
Разрешение = отображает пользователя в дб назад к входу в систему сервера.
Как более конкретная версия ответа 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 должно быть установлено на сервере шлюза; этот пакет доступен для каждого основного распределения и ОС.
Можно использовать директиву ProxyCommand в ~/.ssh/config файл, например, для использования netcat в качестве реле:
host server2
ProxyCommand ssh server1 nc server2 22
Вы просто использовали бы 'ssh server2'. Информация о странице справочника для этой директивы найдена в 'человеке ssh_config'
Я предпочитаю другой подход, который поддерживает предварительно аутентифицируемый туннель к серверу шлюза. В ~/.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.
Работает отлично.
Это может быть выполнено путем выполнения ssh -At johndoe@a ssh webby@foo
. -A
управляйте форвардами Ваш ssh агент (таким образом, можно избежать необходимости повторно проходить проверку подлинности на прокси), в то время как -t
гарантирует, что терминал существует на прокси. Следующая функция удара может быть полезной:
ssh-bounce () {
local cmd=""
for i in "$@"; do
cmd+="ssh -At $i "
done
$cmd
}
weppos:~ weppos$ ssh foo -vv
[..]
bash: nc: command not found
Netcat не установлен на a
. Когда Вы работаете ssh host "command arg"
, command
выполняется на host
, не на Вашей локальной машине.
Этот тип функциональности существует в более новых версиях OpenSSH и может использоваться, выполнив
ssh -W server2 server1
, где server2
- ваш предполагаемый пункт назначения, а server1
- ваш прокси-сервер. Вы можете упростить это, используя параметр ProxyCommand
в вашей конфигурации ssh, например:
host = *.example.com
user = packs
port = 22
ProxyCommand ssh -W %h:%p server1
Когда 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
не решить проблему с разными именами пользователей?
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