.Profile / .bashrc'nin SSH eşdeğeri


14

Ben ssh herhangi bir sunucuda oturumum içinde bazı takma adları otomatik olarak tanımlamak için bir yol arıyorum. Onları .bashrcsunucudaki dosyalara koyamıyorum çünkü giriş yaptığım kullanıcı hesapları başkaları tarafından paylaşılıyor ve ayrıca onlarca var ve her makinede bir komut dosyası tutmak acı verici olacak. expectTakma adları otomatik olarak yazmak için kullanabileceğimi biliyorum , ancak OpenSSH'nin bunu başarmak için kullanılabilecek yerleşik bir şey olup olmadığını merak ediyordum?

Yanıtlar:


7

Bunu beklemede yanlış bir şey yok. Bunu yaptığım diğer yol da oldukça kirli, bir komut dosyasıyla, önce çalıştırmak istediğiniz profili scp, sonra ssh, çalıştırın ve bağlı kalın.

Bu nedenle, tüm profil ayarlarını yerel bir dosyaya yerleştirin .<local username>-<hostname>-init.shve uzak ana bilgisayarda oturum açmak için aşağıdaki komut dosyasını çalıştırın.

#!/bin/sh
[ $# -eq 0 ] && { echo "syntax: $0 <host> [<ssh-option>...]" 1>&2 ; exit 1 ; }
host=$1 ; shift    # use any remaining args as ssh options
initfile=".$USER-`hostname`-init.sh"
scp -q ~/.ssh-init.sh "$host:/var/tmp/$initfile"
ssh -t "$@" $host "bash --rcfile /var/tmp/$initfile"

Bu hoşuma gitti çünkü sunucuda herhangi bir özel yapılandırma gerektirmez, güzel!
Ramon

4

Yapılandırmanızı yerleştirebilir .bashrcve yalnızca oturum açtığınızda çalışmasına izin verebilirsiniz. Bunu mümkün kılmak için bir ortam değişkenini ssh üzerinden geçirebilirsiniz.

.bashrc modifikasyonlar

# common stuff
if [ -n "$IAMTHEGREATEST" ]; then
  # my personal cool stuff
fi;
# other global stuff

sshd_config modifikasyonlar:

AcceptEnv ... IAMTHEGREATEST

.ssh/config değişiklikler (istemci tarafı):

Host ...
  SendEnv IAMTHEGREATEST

.bashrc değişiklikler (istemci tarafı):

alias ssh='IAMTHEGREATEST="forsure" ssh'

(test edilmedi, ancak yapmalı)


Bu, OP'nin oturum açtığı herhangi bir sunucuda işleri otomatik olarak kurma hedefini nasıl yerine getirir?
womble

O değil.
Sorunun

Bu neredeyse tam olarak yaptığım şey, ama tek bir farkla - bu ortam değişkenini dışarıdan kabul etmek yerine, SSH anahtarının içine yerleştirdim. Bu, .ssh / yetkili_anahtarları çevre = "IAMTHEGREATEST = forsure" ssh-dss ... ile başlayan satırlar içerdiği anlamına gelir
Bron Gondwana

3

Gönderen ssh (1) Bir dosya oluşturursanız adam sayfasında, ~ / .ssh / rc kullanıcının giriş kabuğu böylelikle de günlük before ön kurulum 'görevleri yapmak şansı veren yürütüldüğünde ÖNCE çalıştırılacaktır .. verilen örnek, oturum açmadan önce ağ paylaşımlarını bağlamaktı.

Tek tek ~ / .ssh / rc dosyaları kullanmak istemiyorsanız , / etc / ssh / sshrc ile de aynısını yapabilirsiniz . Özel kullanıcı adınızı veya bazı tanımlama yöntemlerini kontrol etmek için hızlı bir test, başkalarının bunun yerinde olduğunu fark etmesini bile kısıtlayabilir.

/ etc / ssh / sshrc SADECE ~ / .ssh / rc yoksa kaynaklanır , böylece iki karmaşıklık katmanını etkili bir şekilde elde edebilirsiniz.


ding ding ding - bir kazananımız var!
sonraki duyuruya kadar duraklatıldı.

Bunu özledim! Çekici görünse de, bu yine de sunucu tarafında olduğu için her sunucuyu ayrı ayrı ayarlamayı gerektirecektir.
Ramon

yup, sunucu tarafı, ama sadece bir kez bir dosya scp gerekir. Oturum açtıktan hemen sonra işlenecek bir komut akışı göndermenin gerçekten kolay bir yolu yoktur. {Grin} Bana biraz ver, belki bir şeyler yaz ... {bugün değil!}
lornix

2

Takma adlar kabuk tarafından tanımlanır ve yorumlanır.

Ne yazık ki sshonları uzak kabuğa geçirmenin bir yolu yok .

sshİstemci tarafında uzak tarafta güzel bir ortam oluşturan bir sarıcı yazabilirsiniz , ancak bu hoş olmaz.


0

Mümkünse, her yerden erişilebilen bir sunucuda istediğiniz her şeyi başlatan / tanımlayan ve her sunucuda oturum açtıktan sonra yürüten küçük bir komut dosyasını depolarım.


0

Olası bir çözüm, diğer tüm sunucuların erişebileceği bir web sunucusunda her şeyi ayarlayan komut dosyanızı koymak olabilir.

Sonra her sunucunun sadece küçük bir komut dosyasına ihtiyacı vardır:

wget http://myserver.com/myawesomescript.sh
chmod +x myawesomescript.sh
./myawesomescript.sh

Bu şekilde yalnızca bir yerde güncellemeniz gerekir.


-3

.Ssh / config dosyasına bakın

İşte bir örnek https://lookherefirst.wordpress.com/2007/12/17/a-simple-ssh-config-file/


Lütfen bunun neden yardımcı olacağını düşündüğünüz hakkında daha fazla ayrıntı sağlayın.
Zoredache

Yanıtların içeriğe işaret etmeyen içerik içermesini tercih ediyoruz. Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
user9517
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.