Sunucuya SSH verdiğimde varsayılan dizini değiştir


42

Ubuntu sunucuma SSH'den sonra koyduğum varsayılan dizini değiştirmenin bir yolu olup olmadığını merak ediyordum.

Sunucuma giriş yaptığım zamanın% 99'unda belirli bir dizindeki dosyalara erişmek gerekiyor:

/var/www/websites

Giriş yaparken doğrudan bu dizine girdiğimden emin olacak bir düzenleme dosyası düzenleyebilir miyim?

Yanıtlar:


61

Bunu başarmanın iki yolu vardır:

  • Sunucudaki ana dizininizi / var / www / websites olarak değiştirin (bu gerçekten iyi bir fikir değil)
  • eklemek cd /var/www/websites, aramalarınızdan sonuna .bashrc. Bunu her zaman kuklacılarımızda kullanıyorum, çünkü her zaman homedir yerine / etc / kukla / çevre / dkaarsemaker'da olmak istiyorum :-)

Teşekkürler. / Etc dizininde bulunan bash.bashrc dosyasını düzenledim. Bir muamele :) :)
Bob Flemming

7
Ooh, bunu yapmam, çünkü tüm kullanıcıları etkiler. Düzenlemek için daha iyi /home/yourlogin/.bashrc
Dennis Kaarsemaker

6
Bunu .profileyerine koymak isteyebilirsiniz .bashrc, ancak kullanım durumunuza bağlıdır. .profileyalnızca etkileşimli girişler için (örneğin kabuk) .bashrcyürütülür, ancak etkileşimli olmayan girişler için de (örneğin, scp, rsync vb.) yürütülür. Ayrıca, .profile'un bash olmayan kabuklar (örneğin zsh) tarafından çağrılması daha muhtemeldir.
phod

.bashrc, bash'ınızı yenilemek için "exec bash" yaptığınızda çalıştırılır. Bashrc'nin özel bir kullanım durumu için değiştirilmesi (burada ssh girişi) faydalı değildir.
user3123159

14

SSH girişi command=için anahtar kullanıyorsanız ~/.ssh/authorized_keys, uzak sunucunuzdaki bir anahtarın önüne geçerek yolu değiştirebilirsiniz . Örnek:

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

Aynı kullanıcı için birden çok anahtar üretmek ve kullanmak iyidir. Sunucudaki bir anahtar diğerinde bulunmayan komutu içerebilir - bu şekilde giriş anında beklenen davranışı seçersiniz. Yerel ile satabilirsiniz~/.ssh/config :

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

Bu ne olacak:

local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _

veya:

local$ ssh my-host
webmaster@realhostname:~$ _

3
Bu soruyu kabul edilenin üstünde tercih ediyorum. Birden fazla kullanıcının aynı kullanıcıyı sunucuda kullanmasına ve kişisel olarak oturum açtığınızda ne olacağını özelleştirebilmesine olanak tanır. Diğerlerinden daha esnek ve doğru.
test kullanıcısı

1
~ / .Ssh / yetkili_ tuşlarına komut eklemek, diğer araçları ssh benzeri rsync, scp'ye dayalı olarak etkilediğinden dolayı burada gerçekten dikkatli olmalısınız. Bu komutlar basitçe askıda kalacak
warunapww

1
Araçları çalıştırmak için $SSH_ORIGINAL_COMMANDyerine kullanabilirsiniz /bin/bash -l(benim durumumda, hg). Veya $SHELLbash'a kodlamak istemiyorsanız. Her iki işe araç ve insan girişlerini nasıl alacağınızdan emin değilim.
Eylül’de

Dikkatli bir kelime: PasswordAuthentication'ı devre dışı bıraktıysanız (bkz. Askubuntu.com/questions/346857/… ) ve yanlışlıkla komut dizenizi yanlış yazdıysanız , kendinizi sistemden kilitleyebilirsiniz.
karan.dodia

6

Openssh sshd varsayılan olarak istemciden bu ortam değişkenlerini kabul eder:

AcceptEnv LANG LC_*

Bunu istemcinin yerel ortamından sunucuya bu şekilde bir değer göndermek için kullanabilirsiniz:

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server

SendEnv direktifini ~ / .ssh / config içine yerleştirebilirsiniz, böylece onu komut satırına dahil etmek zorunda kalmazsınız.

Aşağıdakileri ~ / .profile öğenize yerleştirirseniz (yalnızca etkileşimli girişleri etkilemek için .profile kullanın, tüm girişleri etkilemek için .bashrc kullanın):

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

Daha sonra oturum açtığınızda, belirtilmişse ve bir dizinse, dizini ortam değişkeninde belirtilen dizine otomatik olarak değiştirecektir.


1
LC_*Hile için +1
Orient
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.