Вы можете использовать подход, описанный в https://serverfault.com/a/400782
Вы должны будете использовать PermitLocalCommand и LocalCommand для этого.
Я думаю, что решение в порядке, но мне не понравилось, так как оно заменит .bashrc удаленной машины, scp
мой локальный .bashrc в удаленный .bashrc. Также я не мог заставить это работать точно так, как я ожидал.
Другое решение - использовать git для управления всеми вашими точечными файлами, как описано в
http://blog.smalleycreative.com/tutorials/using-git-and-github-to-manage-your-dotfiles/
Но большая проблема для меня заключается в том, что мне пришлось бы настраивать каждый сервер своими точечными файлами. Даже если бы у меня было время (и терпение) развернуть мои точечные файлы на каждом сервере, у меня все равно была бы одна проблема.
Представляя себе контекст, в котором более одного пользователя входят в систему на одном и том же сервере, используя один и тот же логин, было бы несправедливо менять настройки сервера по умолчанию на мои .
Затем...
Итак, я разработал собственное решение для этого, надеюсь, оно вам понравится и будет полезным:
Вам нужно будет:
- Создайте (частную) суть на https://gist.github.com/ вашего .bashrc
- Вам нужно будет войти на GitHub, чтобы создать гист
- Обратите внимание на конфиденциальную информацию, такую как пароли в переменных окружения .bashrc. Во всяком случае, такая информация не должна быть в первую очередь.
- Не берите имя, которое вы дали для файла суть. Я назову это GISTNAME. Выберите имя, которое вряд ли можно найти в удаленном каталоге. Не называйте это ".bashrc", пожалуйста. =) Хорошее имя будет
mycustombashrc.sh
- После сохранения списка найдите ссылку на его версию, нажав кнопку
<>
. Вам понадобится эта ссылка, необработанная ссылка или RAWGISTLINK
Затем в вашем локальном .bashrc
поместите следующее в конце:
function customssh(){
ssh $@ -t 'cd $HOME ;
wget --quiet -N "RAWGISTLINK" ;
cp GISTNAME .'$USER'bashrc ;
bash --rcfile $HOME/.'$USER'bashrc'
}
Не забудьте заменить GISTNAME и RAWGISTLINK
Теперь беги
source ~/.bashrc
А затем просто используйте customssh
(у вас все равно будет обычный ssh
)
customssh mylogin@remoteserver
Просто попробуйте один из ваших псевдонимов сейчас!
Заметки
- Да, это, вероятно, загрузит файл gist при каждом входе в систему, но, поверьте мне, это ДЕЙСТВИТЕЛЬНО быстро. Не беспокойся
- Чтобы обновить общий .bashrc
- Перейдите по URL-адресу gist и внесите свои изменения (или скопируйте в него локальный .bashrc).
- Затем обновите функцию customssh, заменив RAWGISTLINK новым RAWGISTLINK (ссылка на gist и GISTNAME совпадают, но необработанная ссылка на gist изменяется при внесении изменений в файл).
- Теперь просто запустите
source ~/.bashrc
. Это оно! Не нужно ничего менять на своих удаленных серверах!
- Мое решение полностью основано на Ubuntu, возможно, ему понадобятся некоторые настройки, чтобы оно работало с другими дистрибутивами
- Вы, вероятно, можете использовать другие сервисы, такие как gist вместо github. Пастебин - один из примеров, но есть и другие. Это вполне возможно, но я еще не пробовал.
- Также вы можете
wget
свой custombashrc.sh из других мест. Например, общедоступный веб-сервер.
- Другой вариант, если ваша локальная машина видна в Интернете через ssh, вы можете просто
scp
файл с локального сервера (используя публичный адрес) на удаленный сервер. Я не использовал это решение, потому что трудно предположить, что ваша локальная машина не будет скрыта за маршрутизатором или брандмауэром (в моем случае я за маршрутизатором)
- Может быть, вы можете найти проблемы в разных версиях Ubuntu, но я пока не мог их найти.
Лучшее в этом подходе - это то, что он ничего не меняет на удаленных серверах и без особых усилий на локальном компьютере, а с помощью gist вы получаете все удовольствие от вашего локального .bashrc на любом сервере, который вам нужен.
И вы все еще можете легко "отключить" это, используя ssh
вместо customssh
.