Dukungan SSH

Halaman ini menjelaskan cara menggunakan gcloud CLI untuk terhubung ke workstation Anda dari komputer lokal menggunakan SSH (atau protokol TCP lainnya).

Cloud Workstations menggunakan tunnel untuk meneruskan traffic TCP antara port di komputer lokal Anda dan port di workstation Anda tanpa mengekspos workstation Anda secara terbuka ke internet. Koneksi diautentikasi menggunakan kredensial dari gcloud CLI dan diotorisasi sesuai dengan kebijakan IAM workstation target.

Setelah tunnel TCP dibuat antara port lokal dan workstation Anda, Anda dapat menggunakannya untuk meneruskan traffic dari klien SSH, curl, atau aplikasi lain yang menggunakan TCP.

Untuk memudahkan, Cloud Workstations menyediakan perintah gcloud workstations ssh, yang membuat tunnel TCP dan menjalankan klien SSH dengan satu perintah gcloud CLI.

Untuk semua kasus penggunaan lainnya, gunakan gcloud workstations start-tcp-tunnel perintah untuk membuat tunnel TCP dan menjalankan aplikasi yang akan menggunakan tunnel (misalnya, curl) di terminal terpisah.

Sebelum memulai

  1. Jika Anda belum memiliki workstation untuk terhubung, siapkan workstation.

  2. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

    gcloud init

    Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  3. Pastikan Anda memiliki peran IAM Pengguna Cloud Workstations di workstation yang akan Anda hubungkan.

    Buka IAM

Menghubungkan ke workstation Anda menggunakan SSH

Untuk membuat koneksi SSH yang aman ke workstation Anda, gunakan gcloud workstations ssh perintah, yang memulai tunnel TCP dan menjalankan klien SSH.

Jalankan perintah berikut di jendela terminal lokal:

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME  \
    --port=WORKSTATION_PORT  \
    --local-host-port=localhost:LOCAL_PORT  \
    WORKSTATION_NAME

Ganti nilai berikut:

  • PROJECT_ID: Google Cloud project ID untuk project yang berisi workstation. Jika dihilangkan, project saat ini akan digunakan.

  • REGION: region tempat cluster workstation berada—misalnya, us-central1.

  • CLUSTER_NAME: nama cluster workstation yang berisi workstation.

  • CONFIG_NAME: nama konfigurasi workstation yang berisi workstation ini.

  • WORKSTATION_PORT (Opsional): port di workstation yang menjadi tujuan pengiriman traffic. Jika dihilangkan, traffic akan dikirim ke port 22. Semua image Cloud Workstations yang telah dikonfigurasi sebelumnya menyertakan server SSH yang berjalan di port workstation 22.

  • LOCAL_PORT (Opsional): port localhost yang menjadi sumber pengiriman traffic. Nomor port yang valid adalah 1024 hingga 65535. Jika Anda menghilangkan flag --local-host-port atau menentukan port 0, port yang tidak digunakan akan dipilih secara otomatis.

  • WORKSTATION_NAME: nama workstation.

Konfigurasi SSH dan file .ssh/config

Saat Anda menggunakan gcloud workstations ssh, perintah akan merutekan koneksi Anda melalui localhost. Akibatnya, perintah ini tidak otomatis menerapkan entri Host dari file ~/.ssh/config Anda yang menggunakan nama workstation.

Untuk menerapkan konfigurasi SSH kustom, pilih salah satu opsi berikut:

Opsi 1: Meneruskan flag di command line

Anda dapat meneruskan opsi SSH langsung ke klien SSH yang mendasarinya dengan menambahkannya setelah tanda hubung ganda (--):

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME \
    WORKSTATION_NAME \
    -- -o SSH_OPTION=VALUE

Opsi 2: Menggunakan tunnel TCP persisten dan .ssh/config

Jika Anda lebih suka menggunakan file ~/.ssh/config:

  1. Mulai tunnel TCP persisten di jendela terminal terpisah dan tentukan port lokal:

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        22
    
  2. Tambahkan blok konfigurasi ke file ~/.ssh/config di komputer lokal Anda:

    Host WORKSTATION_NAME
        HostName localhost
        Port LOCAL_PORT
        User user
        # Disable host key checking for ephemeral cloud workstations
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null
        # Add any other SSH options here
    
  3. Hubungkan ke workstation Anda menggunakan SSH standar:

    ssh WORKSTATION_NAME
    

Menggunakan tunnel TCP untuk meneruskan traffic TCP arbitrer ke workstation Anda

Untuk terhubung ke workstation menggunakan aplikasi TCP selain ssh, gunakan perintah gcloud workstations start-tcp-tunnel:

  1. Jalankan perintah gcloud CLI berikut untuk membuat tunnel TCP yang diautentikasi.

    Untuk menyalin perintah ke buffer salin-tempel, klik Salin contoh kode , lalu tempel perintah ke jendela terminal lokal:

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        WORKSTATION_PORT
    

    Ganti nilai berikut:

    • PROJECT_ID: Google Cloud project ID untuk project yang berisi workstation. Jika dihilangkan, project saat ini akan digunakan.

    • REGION: region tempat cluster workstation berada—misalnya, us-central1.

    • CLUSTER_NAME: nama cluster workstation yang berisi workstation.

    • CONFIG_NAME: nama konfigurasi workstation yang berisi workstation ini.

    • LOCAL_PORT (Opsional): port localhost yang menjadi sumber pengiriman traffic. Nomor port yang valid adalah 1024 hingga 65535. Jika Anda menghilangkan flag --local-host-port atau menentukan port 0, port yang tidak digunakan akan dipilih secara otomatis.

    • WORKSTATION_NAME: nama workstation.

    • WORKSTATION_PORT: port workstation yang menjadi tujuan pengiriman traffic. Image Cloud Workstations yang telah dikonfigurasi sebelumnya menyertakan server SSH yang berjalan di port workstation 22.

  2. Perintah gcloud CLI melakukan uji konektivitas dengan workstation, membuka tunnel, lalu menampilkan nomor port:

    Listening on port [LOCAL_PORT].
    

    Semua traffic yang dikirim ke localhost:LOCAL_PORT diteruskan ke workstation. Port hanya dapat diakses oleh aplikasi yang berjalan di komputer lokal Anda.

  3. Biarkan gcloud CLI berjalan dan buka terminal lain untuk menjalankan aplikasi yang terhubung ke workstation Anda.

    Misalnya, jika Anda menjalankan server di workstation yang melayani port WORKSTATION_PORT, dan pada langkah sebelumnya Anda membuat tunnel TCP yang meneruskan traffic antara port lokal LOCAL_PORT dan port workstation WORKSTATION_PORT, Anda dapat menjalankan curl di komputer lokal untuk terhubung ke server di workstation Anda:

    curl localhost:LOCAL_PORT
    Hello, world!
    
  4. Setelah selesai, kembali ke terminal tempat Anda memulai tunnel TCP dan hentikan gcloud CLI dengan menekan Control+C.

Menggunakan server SSH di port yang berbeda

Image container kustom juga dapat menggunakan server SSH di port mana pun. Untuk mendukung koneksi dari tunnel gcloud CLI, Anda harus mengonfigurasi server SSH kustom untuk mengizinkan autentikasi sandi dan menetapkan pengguna target dengan sandi kosong. Cloud Workstations uses Cloud IAM untuk membantu memastikan hanya traffic yang diotorisasi yang dikirim ke server SSH.

Mempertahankan sesi SSH

Jika koneksi jaringan Anda terputus, sesi SSH Anda akan terputus. Untuk menjaga proses Anda tetap berjalan saat terputus dan melampirkan kembali ke sesi Anda nanti, gunakan alat seperti tmux.

Untuk menginstal tmux di workstation Anda:

  1. Instal tmux secara manual di sesi Anda saat ini untuk segera menggunakannya:

    sudo apt update
    sudo apt install -y tmux
    
  2. Konfigurasikan workstation Anda untuk menginstal tmux saat startup. Buat atau tambahkan ke file /home/user/.workstation/customize_environment untuk menyertakan perintah berikut:

    #!/bin/bash
    sudo apt update
    sudo apt install -y tmux
    

    Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan image workstation yang ada tanpa memperluasnya.

  3. Jadikan file dapat dieksekusi sehingga berjalan saat workstation dimulai:

    chmod +x /home/user/.workstation/customize_environment
    

Setelah tmux diinstal:

  1. Hubungkan ke workstation Anda:

    gcloud workstations ssh \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        WORKSTATION_NAME
    
  2. Mulai sesi tmux baru dari workstation Anda:

    tmux
    
  3. Jika koneksi Anda terputus, hubungkan kembali dan lampirkan ke sesi Anda dengan menjalankan perintah berikut dari terminal lokal Anda:

    gcloud workstations ssh \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        WORKSTATION_NAME \
        -- -t tmux attach
    

Langkah berikutnya