답변:
.bashrc
다른 이름으로 원격 컴퓨터에 임시로 복사 할 수 있습니다 . 예를 들어, 사용 .bashrc_temp
:
user@local$ scp .bashrc user@remote:~/.bashrc_temp
그런 다음 원격 시스템에 로그인 할 수 있습니다.
user@local$ ssh user@remote
그리고 source
파일 .bashrc_temp
:
user@remote$ source ~/.bashrc_temp
이제 당신 .bashrc
과 당신의 기능 을 사용할 수 있습니다. 작업이 끝나면 원격 시스템에서 ~ / .bashrc_temp 파일을 제거하고 로그 아웃 할 수 있습니다.
파일 복사 및 원격 시스템으로의 로그인은 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
}
업데이트 :
당신은 또한을 복사 고려할 수 .bashrc
에 /tmp
원격 기계와 소스 /tmp/.bashrc_temp
.
업데이트 2 :
ssh -t 를 사용하여 원격 시스템에 로그인 할 수 있습니다 . 이것은 자동으로 온도를 사용합니다 .bashrc
. 업데이트 된 기능 s()
:
function s() {
scp ~/.bashrc $1:/tmp/.bashrc_temp
ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}
/tmp/
합니다. 이것은 다른 사용자에 의해 사 용되어 로그인하는 사용자로 코드를 실행할 수 있습니다. mktemp
임시 파일의 이름이 고유해야합니다.
jens-na는 훌륭한 답변을 제공했습니다. 나는 약간의 시간을 보냈고 조금 더 잘 일하기 위해 약간 재 작업했습니다. 이 방법으로 포트 번호와 같은 모든 매개 변수를 SSH로 전달할 수 있습니다. 차이점은 다른 명령 매개 변수 이름을 사용하는 대신 ssh
명령을 사용하여 .bashrc
파일 을 업로드 한다는 점 scp
입니다.
또한 파일이 다른 파일을 업로드 .bashrc_remote
하므로 모든 것 대신 원격 서버에서 원하는 것을 정확하게 선택할 수 있습니다.
sshs() {
ssh $@ "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
ssh -t $@ "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}
다음과 같이 실행하십시오.
sshs user@server
' sshs
' 이름 은 "SSH 소스"입니다. ssh
소싱하고 싶지 않을 때 사용하고 할 때 사용하십시오 sshs
.
Pseudo-terminal will not be allocated because stdin is not a terminal
나는 sshrc가 당신이 찾고있는 것이라고 생각합니다 : https://github.com/Russell91/sshrc
sshrc는 ssh처럼 작동하지만 원격으로 로그인 한 후 ~ / .sshrc도 제공합니다.
$ echo "echo welcome" > ~/.sshrc
$ sshrc me@myserver
welcome
$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc me@myserver
$ type ..
.. is aliased to `cd ..'
이를 사용하여 환경 변수를 설정하고 기능을 정의하며 로그인 후 명령을 실행할 수 있습니다. 그것은 sshrc를 사용하더라도 서버의 다른 사용자에게는 영향을 미치지 않습니다. 보다 고급 구성을 보려면 계속 읽으십시오.
vim $(which sshrc)
bash 파일을 볼 수 있습니다. 각 줄 뒤에 에코 명령을 추가하여 행이 어디에서 있는지 확인할 수 있습니다.
제한 사항을 모르지만 다음과 같은 작업을 수행 할 수있었습니다.
function ssh_with_rc() {
RC_DATA=`cat ${HOME}/.bashrc | base64 -w 0`
ssh -t $@ "echo \"${RC_DATA}\" | base64 --decode > /tmp/${USER}_bashrc; bash --rcfile /tmp/${USER}_bashrc; rm /tmp/${USER}_bashrc"
}
alias ssh="ssh_with_rc"
RC_DATA
변수 를 피하는 방법을 찾는 것 입니다.
이것이 내가 생각해 낸 것입니다. 일반적인 rc 파일을 유지할 수있을뿐 아니라 하나의 ssh 연결에서 모든 작업을 수행 할 수 있습니다 (즉, 먼저 scp를 수행하는 대신 한 번만 로그인하면 됨).
#copies some environment over to the remote machine
function ssh() {
/usr/bin/ssh -t $* "echo `base64 -i ~/bin/remote_ssh_env.sh` | base64 --decode > /tmp/remote_ssh_env.sh; bash --rcfile /tmp/remote_ssh_env.sh"
}
rc 파일의 크기가 어느 정도인지 확실하지 않습니다.
https://github.com/fsquillace/pearl-ssh 가 필요한 것을 수행한다고 생각 합니다.
sshrc가 태어나 기 전에 오래 전에 작성했으며 sshrc에 비해 더 많은 이점이 있습니다.
예를 들어 :
$> echo "alias q=exit" > ~/.config/pearl/sshrc
$> ssh_pearl myuser@myserver.com
myserver.com $> q
exit
나는 당신과 같은 문제를 해결하기 위해 찾고 있었고, 실제로 찾고있는 것이 sshfs라는 것을 깨달았습니다. 어쩌면 당신도 그것을 사용할 수 있습니까?
내 문제는 ssh'ing 할 때 원격 작업을하면서 색상, 별칭, 함수 및 스크립트를 유지하고 싶었습니다.