Потребовалось время, чтобы вернуться сюда, чтобы ответить на собственные вопросы.
Обновление библиотеки Jsch
Pycharm версии 4 содержит библиотеку с ошибкой. Эта ошибка препятствует SFTP-коммуникации с использованием определенных алгоритмов обмена ключами SSH с чем-либо, кроме базовых шифров Diffie-Helman-group1*. Поэтому нам нужно обновить библиотеку, чтобы Pycharm мог взаимодействовать с нашей виртуальной машиной. Наша виртуальная машина позволяет использовать только более современные ключи и не допускает использование устаревших шифров Diffie-Helman-group1*.
Pycharm 4 имеет устаревшую версию java-библиотеки под названием Jsch, которую он использует для связи с SFTP (которая необходима для передачи вспомогательных файлов). Чтобы решить эту проблему, нужно просто обновить библиотеку.
Обновленная библиотека была найдена на sourceforge и находится по адресу: http://sourceforge.net/projects/jsch/files/jsch.jar/0.1.53/
Затронутые версии
Шаги загрузки
Примечание: Это было исправлено в Pycharm 5, и обновление исправило это для моих коллег, но если у вас есть другие приложения на основе java, это может помочь вам.
Примечание: В конечном итоге я обнаружил это, покопавшись в журнале Pycharm. Я увидел, что есть проблемы с библиотекой, и несколько поисков в google спустя я нашел библиотеку на sourceforge.
У вас есть несколько возможностей:
ПУТЬ
на сервере в ~ / .ssh / environment
(необходимо включить в PermitUserEnvironment да
в sshd_config
). .bashrc
: префикс команды с помощью . ~ / .bashrc
(или исходный код
) Какой путь вы выберете в значительной степени зависит от варианта использования.
Вы приравниваете локальные настройки к удаленным настройкам.
Локально, экземпляр bash, текущая запущенная оболочка, в которой вы пишете:
ssh user@host command
Будет выполнять команду ssh (не более того) как клиент ssh.
Для этого local оболочке требуется , а не для запуска вспомогательной оболочки, новой оболочки или входа в систему.
Команда выполняется как ls
команда: локально.
Это клиентская команда ssh, которая открывает сетевое соединение с удаленной системой, где при правильной аутентификации будет запущена новая оболочка для выполнения команды, записанной как аргумент ssh, или, если аргумент не указан, ожидайте дальнейшие команды в этом соединении.
Эта новая оболочка Remote обязательно будет оболочкой входа в систему, поскольку удаленный пользователь (в этой системе) должен быть аутентифицирован для входа в систему. Или, если дана какая-то конкретная команда, просто запустите такую команду с привилегиями аутентифицированного пользователя.
Вы можете увидеть, какие файлы получены, добавив $ file sourced
в начало каждого файла (в системе удаленной ) (для изменения / etc /
files):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
А затем просто запустите консоль ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
В этом случае были прочитаны оба файла bashrc
, потому что каждый файл профиля
содержал команды для включать их не потому, что их напрямую получила оболочка входа.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
В этой системе, где bashrc
читается в обоих случаях.
Нет необходимости добавлять исходный код ~ / .bashrc
к команде для выполнения.
Все, что вам нужно сделать, это указать правильные настройки для изменения «$ ПУТЬ» в /etc/bash.bashrc
для всех пользователей, запускающих оболочку в этой системе. . Или в ~ / .bashrc
для каждого пользователя, которому это нужно. Вы можете добавить (или отредактировать) скелет пользователя .bashrc
в / etc / skel /
, чтобы любой новый пользователь имел доступный правильный файл.
Вышеуказанное верно только для bash. Если вам нужно, чтобы этот параметр работал для всех оболочек, возможно, установите переменную среды PATH с помощью файла ssh ~ / .ssh / environment
для каждого пользователя, которому он нужен. Или используйте / etc / ssh / sshrc
для глобальной настройки в системе, в которой работает ssh-сервер (дополнительные подробности см. В разделе «Файлы» в man sshd
).