Możesz tymczasowo skopiować swój .bashrc
komputer na zdalne urządzenie pod inną nazwą. Na przykład za pomocą .bashrc_temp
:
user@local$ scp .bashrc user@remote:~/.bashrc_temp
Następnie możesz zalogować się do zdalnego komputera:
user@local$ ssh user@remote
i source
plik .bashrc_temp
:
user@remote$ source ~/.bashrc_temp
Teraz możesz korzystać ze swoich .bashrc
i swoich funkcji. Po zakończeniu pracy możesz usunąć plik ~ / .bashrc_temp ze zdalnego komputera i wylogować się.
Kopiowanie pliku i logowanie do zdalnego komputera można uzyskać za pomocą funkcji bash:
# copy the .bashrc to the remote machine
# and log into the remote machine.
# parameter $1: user@remote
function s() {
scp ~/.bashrc $1:~/.bashrc_temp
ssh $1
}
Aktualizacja :
Można również rozważyć, aby skopiować .bashrc
do /tmp
na zdalnej maszynie i źródła /tmp/.bashrc_temp
.
Aktualizacja 2 :
Możesz zalogować się do zdalnego komputera za pomocą ssh -t . Spowoduje to automatyczne użycie temp .bashrc
. Zaktualizowana funkcja s()
:
function s() {
scp ~/.bashrc $1:/tmp/.bashrc_temp
ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}
/tmp/
. Może to być trywialnie wykorzystane przez każdego innego użytkownika do uruchomienia dowolnego kodu jako użytkownik, który się zaloguje. Powinno to być użyte,mktemp
aby upewnić się, że plik tymczasowy ma unikalną nazwę.jens-na zapewnił doskonałą odpowiedź. Spędziłem trochę czasu i przerobiłem to, aby trochę lepiej pracować. W ten sposób możesz przekazać dowolny parametr do SSH, np. Numery portów. Różnica polega na tym, że używa
ssh
polecenia do przesłania.bashrc
pliku, zamiast tegoscp
, który używa różnych nazw parametrów polecenia.Zauważysz również, że przesyła on inny plik,
.bashrc_remote
dzięki czemu możesz wybrać dokładnie to, co chcesz uzyskać na zdalnych serwerach, zamiast wszystkiegoUruchom w następujący sposób:
Nazwa „
sshs
” oznacza „Źródło SSH”. Użyj,ssh
gdy nie chcesz źródła, i użyj,sshs
gdy to zrobisz.https://gist.github.com/jonahbron/5549848
źródło
Pseudo-terminal will not be allocated because stdin is not a terminal
Myślę, że sshrc jest tym, czego szukasz: https://github.com/Russell91/sshrc
Możesz użyć tego do ustawiania zmiennych środowiskowych, definiowania funkcji i uruchamiania komend po zalogowaniu. To takie proste i nie wpłynie na innych użytkowników na serwerze - nawet jeśli używają również sshrc. Aby uzyskać bardziej zaawansowaną konfigurację, kontynuuj czytanie.
źródło
vim $(which sshrc)
i zobaczysz plik bash. Możesz dodać polecenia echa po każdej linii, aby zobaczyć, gdzie się zawiesza.Nie jestem pewien ograniczeń, ale udało mi się sprawić, aby działało z czymś takim jak:
źródło
RC_DATA
zmiennej.Właśnie to wymyśliłem. Pozwala na utrzymanie normalnego pliku rc, ale także robienie wszystkiego w jednym połączeniu ssh (tj. Wystarczy zalogować się tylko raz, a nie najpierw wykonać scp).
Nie jestem pewien, jak duży może być ten plik rc, ponieważ w pewnym momencie może się on maksymalnie wydłużyć.
źródło
Myślę, że https://github.com/fsquillace/pearl-ssh robi to, czego potrzebujesz.
Napisałem to dawno temu, zanim narodził się sshrc i ma więcej zalet w porównaniu do sshrc:
Na przykład:
źródło
Jedną z opcji umożliwiającą pracę z jedną sesją SSH jest użycie zmiennej do przechowywania pliku bash, a nie kopiowanie go.
Wydaje się dla mnie pracować.
źródło
Chciałem rozwiązać problem taki jak twój i zdałem sobie sprawę, że tak naprawdę szukam sshfs. Może ty też możesz tego użyć?
Mój problem polegał na tym, że podczas ssh'ing chciałem zachować swoje kolory, aliasy, funkcje i skrypty podczas pracy zdalnej.
http://fuse.sourceforge.net/sshfs.html
źródło