bash - su и $ HOME

Это соответствующая часть вашего файла журнала:

debug1: Trying private key: /home/Aericio/.ssh/id_ecdsa
Enter passphrase for key '/home/Aericio/.ssh/id_ecdsa':
debug3: sign_and_send_pubkey: ECDSA SHA256:/nMfW17zQ9zoH1UCzlSmLWtN4Mh/ST62SE5sB9B7D24
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51

SSH обнаружил один ключевой файл (id_ecdsa) — он запросил у вас его пароль, а затем передал его на целевой сервер. Целевой сервер не доверял вашему ключу, и ssh перешел к использованию следующего метода аутентификации.

Что вам нужно сделать, так это скопировать открытый ключ на целевой сервер в файл authorized_keys, проще всего примерно следующим образом:

ssh-copy-id <user>@<destination server>

Если у вас есть более одного ключа или есть один определенный идентификатор для копирования, вы можете добавить -i .ssh/id_ecdsa.pub к команде

0
09.04.2017, 22:25
1 ответ

Это потому, что во втором примере переменная $ HOME расширяется до того, как оболочка выполнит команду, поэтому на самом деле вы выполняете

sudo su - user2 -c "echo /home/user1" 

, поскольку это значение переменной $ HOME имеет на данный момент.

(я также предполагаю, что вывод второй команды на самом деле не $ HOME = / home / user1 , а просто / home / user1 ).

Вы можете предотвратить расширение переменных в первой оболочке, если используете одинарные кавычки:

$ sudo su - user2 -c 'echo $HOME' 
/home/user2
4
28.01.2020, 02:19

Теги

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