Чтобы беспрепятственно подключаться к удаленному серверу через PLINK, в первый раз и в последующее время вам необходимо вручную согласовать ключи SSH. То есть используйте PUTTYGEN для создания файла закрытого ключа .ppk, который будет использовать PLINK, и заранее сохраните соответствующий открытый ключ в файле ~/.ssh/authorized_keys
на сервере.
Вам также необходимо согласовать ключи хоста sshd, поэтому используйте PUTTYGEN для генерации набора файлов закрытых ключей ssh_host_rsa_key
и ssh_host_dsa_key
в /etc/ssh
(посмотрите существующие файлы, чтобы выяснить, в какие форматы ключей экспортировать файлы ), а затем запустите ssh-keygen -y -f /etc/ssh/ssh_host_rsa_key > /etc/ssh/ssh_host_rsa_key.pub
, чтобы создать соответствующие файлы открытого ключа (выполните то же самое, чтобы создать файл ssh_host_dsa_key.pub
).
Если у вас есть несколько серверов, к которым вы хотите подключиться, и не против использовать один и тот же ключ для подключения ко всем из них (это будет зависеть от вашей локальной политики безопасности ИТ), просто скопируйте те же файлы ключей на каждый сервер.
ТОГДА на своей машине с Windows, на которой вы используете PLINK, вручную подключитесь к любому серверу с помощью PUTTY или PLINK и в интерактивном режиме примите ключ хоста. Как только вы это сделаете, PUTTY / PLINK сохранит этот ключ в реестре Windows под HKCU\Software\SimonTatham\PuTTY\SshHostKeys
. Вы увидите запись типа rsa2@22:host
, где host
- имя хоста вашего сервера.
Теперь, суть процедуры, вам необходимо скопировать шестнадцатеричное значение REG_SZ 0x23,...
в ваше приложение C #, где вам придется вручную использовать классы Microsoft.Win32.RegistryKey
, чтобы записать это значение для всех других серверов, используя та же схема именования rsa2@22:host
перед тем, как вы отправитесь в PLINK (считаете ли вы, что это значение реестра является чувствительным к безопасности, зависит от вас, поэтому защитите его как-нибудь в своем приложении C #, если потребуется).
Как и другие упоминали, вы можете рассмотреть возможность использования библиотеки SSH для получения более программной обратной связи о процессе подключения, но для использования PLINK это то, что вам нужно сделать.