Thay đổi thư mục mặc định khi tôi SSH sang máy chủ


42

Tôi đã tự hỏi liệu có cách nào để thay đổi thư mục mặc định mà tôi nhận được sau khi tôi SSH vào máy chủ Ubuntu của mình không.

99% khi tôi đăng nhập vào máy chủ của mình, đó là truy cập các tệp trong một thư mục cụ thể:

/var/www/websites

Có một tập tin cấu hình mà tôi có thể chỉnh sửa sẽ đảm bảo tôi được đưa thẳng vào thư mục này khi tôi đăng nhập không?

Câu trả lời:


62

Có hai cách để đạt được điều này:

  • Thay đổi chủ đề của bạn trên máy chủ thành / var / www / website (đây không thực sự là một ý tưởng hay)
  • thêm cd /var/www/websitesvào cuối của bạn .bashrc. Tôi sử dụng cái này trên các nghệ sĩ múa rối của chúng tôi vì tôi luôn muốn ở trong / etc / Puppet / môi trường / dkaarsemaker ở đó thay vì homedir của tôi :-)

Cảm ơn. Tôi đã chỉnh sửa tệp bash.bashrc nằm trong thư mục / etc. Làm việc một điều trị :)
Bob Flemming

7
Ồ, tôi sẽ không làm điều đó, vì nó ảnh hưởng đến tất cả người dùng. Tốt hơn để chỉnh sửa /home/yourlogin/.bashrc
Dennis Kaarsemaker

6
Bạn có thể muốn đặt cái này vào .profilethay vì .bashrc, nhưng nó phụ thuộc vào trường hợp sử dụng của bạn. .profilechỉ được thực hiện cho các lần đăng nhập tương tác (ví dụ: shell) nhưng .bashrccũng được thực hiện cho các lần đăng nhập không tương tác (ví dụ: scp, rsync, v.v.). Ngoài ra, .profile có nhiều khả năng được gọi bằng shell mà không phải là bash (ví dụ zsh).
phord

.bashrc được thực thi khi bạn thực hiện "exec bash" để làm mới bash của bạn. Thay đổi bashrc cho trường hợp sử dụng đặc biệt (ở đây đăng nhập ssh) không hữu ích.
dùng3123159

14

Nếu bạn sử dụng khóa để đăng nhập SSH thì bạn có thể thay đổi đường dẫn bằng cách command=đăng ký trước trước khi nhập khóa ~/.ssh/authorized_keystrên máy chủ từ xa . Thí dụ:

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

Bạn có thể tạo và sử dụng nhiều khóa cho cùng một người dùng. Một khóa trên máy chủ có thể chứa lệnh còn lại có thể không - theo cách này bạn chọn hành vi dự kiến ​​tại thời điểm đăng nhập. Bạn chỉ có thể gói nó với địa phương ~/.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

Đây là những gì sẽ xảy ra:

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

hoặc là:

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

3
Tôi thích câu hỏi này hơn câu hỏi được chấp nhận. Nó cho phép nhiều người dùng sử dụng cùng một người dùng trên máy chủ và vẫn có thể tùy chỉnh những gì xảy ra khi bạn đăng nhập cá nhân. Linh hoạt hơn và chính xác như người dùng khác.
testuser

1
Bạn phải thực sự cẩn thận ở đây vì việc thêm các lệnh vào ~ / .ssh / ủy quyền_key ảnh hưởng đến các công cụ khác dựa trên ssh như rsync, scp. Các lệnh này chỉ đơn giản là treo
warunapww

1
Bạn có thể sử dụng $SSH_ORIGINAL_COMMANDthay vì /bin/bash -lđể các công cụ hoạt động (trong trường hợp của tôi, hg). Hoặc $SHELLnếu bạn không muốn mã hóa cứng để bash. Không chắc chắn làm thế nào để có được công cụ và thông tin đăng nhập của con người để làm việc.
mở

Chỉ cần một lời cảnh báo: Nếu bạn đã vô hiệu hóa Mật khẩu xác thực (xem Askubfox.com/questions/346857/ mẹo ) và vô tình gõ nhầm chuỗi lệnh của bạn, bạn có thể tự khóa hệ thống.
karan.dodia

6

Openssh sshd theo mặc định chấp nhận các biến môi trường này từ máy khách:

AcceptEnv LANG LC_*

Bạn có thể sử dụng điều đó để gửi một giá trị từ môi trường cục bộ của máy khách đến máy chủ như thế này:

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

Bạn có thể đặt lệnh SendEnv trong ~ / .ssh / config để bạn không phải đưa nó vào dòng lệnh.

Nếu bạn đặt các mục sau trong ~ / .profile của bạn (để chỉ ảnh hưởng đến thông tin đăng nhập tương tác, hãy sử dụng .profile, để ảnh hưởng đến tất cả thông tin đăng nhập sử dụng .bashrc):

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

Sau đó, nó sẽ tự động thay đổi thư mục thành một chỉ định trong biến môi trường khi bạn đăng nhập, nếu nó được chỉ định và nếu đó là một thư mục.


1
+1 cho LC_*trò lừa
Phương Đông
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.