Você pode copiar temporariamente .bashrc
para a sua máquina remota com outro nome. Por exemplo, usando .bashrc_temp
:
user@local$ scp .bashrc user@remote:~/.bashrc_temp
Depois, você pode fazer login na máquina remota:
user@local$ ssh user@remote
e source
o arquivo .bashrc_temp
:
user@remote$ source ~/.bashrc_temp
Agora você pode usar suas .bashrc
e suas funções. Quando você terminar seu trabalho, poderá remover o arquivo ~ / .bashrc_temp na máquina remota e sair.
A cópia do arquivo e o login na máquina remota podem ser obtidos com uma função 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
}
Atualização :
Você também pode considerar a copiar o .bashrc
que /tmp
em sua máquina remota e fonte /tmp/.bashrc_temp
.
Atualização 2 :
Você pode efetuar login na máquina remota usando ssh -t . Isso usará automaticamente sua temperatura .bashrc
. Função atualizada s()
:
function s() {
scp ~/.bashrc $1:/tmp/.bashrc_temp
ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}
/tmp/
. Isso pode ser trivialmente explorado por qualquer outro usuário para executar qualquer código como um usuário que efetua login. Isso deve ser usadomktemp
para garantir que o arquivo temporário tenha um nome exclusivo.jens-na forneceu uma excelente resposta. Passei um pouco de tempo e refiz um pouco para trabalhar um pouquinho melhor. Dessa forma, você pode passar qualquer parâmetro para o SSH, como números de porta. A diferença é que ele usa o
ssh
comando para fazer upload do.bashrc
arquivo, em vez descp
, que usa nomes de parâmetros de comando diferentes.Você também notará que ele carrega um arquivo diferente
.bashrc_remote
, para que você possa selecionar exatamente o que deseja buscar em servidores remotos, em vez de tudoExecute-o da seguinte maneira:
O nome '
sshs
' é para "Origem SSH". Usessh
quando você não deseja obter a fonte e usesshs
quando quiser.https://gist.github.com/jonahbron/5549848
fonte
Pseudo-terminal will not be allocated because stdin is not a terminal
Acho que sshrc é o que você está procurando: https://github.com/Russell91/sshrc
Você pode usar isso para definir variáveis de ambiente, definir funções e executar comandos pós-login. É simples e não afetará outros usuários no servidor - mesmo que eles usem sshrc também. Para uma configuração mais avançada, continue lendo.
fonte
vim $(which sshrc)
e você pode ver o arquivo bash. Você pode adicionar comandos de eco após cada linha para ver onde ele trava.Não tenho certeza das limitações, mas consegui que isso funcionasse com algo como:
fonte
RC_DATA
variável.Isto é o que eu vim com. Ele permite que você mantenha um arquivo rc normal, mas também faça tudo em uma conexão ssh (ou seja, você só precisa fazer login uma vez em vez de fazer um scp primeiro).
Não tenho certeza de quão grande esse arquivo rc pode ter, pois pode chegar ao máximo em algum momento.
fonte
Acho que https://github.com/fsquillace/pearl-ssh faz o que você precisa.
Eu escrevi há muito tempo antes do sshrc nascer e ele tem mais benefícios em comparação com o sshrc:
Por exemplo:
fonte
Uma opção para fazê-lo funcionar com uma única sessão SSH é usar uma variável para armazenar seu arquivo bash em vez de copiá-lo.
Parece funcionar para mim.
fonte
Eu estava procurando resolver um problema como o seu e percebi que realmente estava procurando por sshfs. Talvez você possa usá-lo também?
Meu problema era que, ao fazer a ssh'ing, eu queria manter minhas cores, pseudônimos, funções e scripts enquanto trabalhava remotamente.
http://fuse.sourceforge.net/sshfs.html
fonte