SSH'den Mac grafik girişini başlatın


16

SSH'den Mac grafik girişini nasıl indükleyebilirim? loginwindowMac OS X'te yönetici olarak SSH aracılığıyla uzaktan oturum açıldığında bir komut çalıştırarak işlemin bir kullanıcı oturumu başlatmasını sağlamanın bir yolu var mı ?

Makine oturum açma penceresindeyken (şu anda hiçbir kullanıcı oturum açmamışsa), kullanıcı adını tıklamış ve bir şifre girmiş gibi bir kullanıcının oturumunu açmasını istiyorum.

GUI'ye komut dosyası yazmayı içermeyen çözümler çok tercih edilir, ancak bu Apple KB sayfası o rotaya gidenler için ilgi çekici olabilir.

Yanıtlar:


4

Parolayı bilmemek işleri karmaşıklaştırıyor olabilir, ancak belki de çözüm şudur: bir kullanıcının parolasını geçici olarak boşaltmak mümkün mü? (Daha sonra daha önce olduğu gibi sıfırlayın.)

Başlangıç ​​olarak:

İlk olarak, görüntülenecek giriş penceresini alın. Mevcut kullanıcının oturumunu kapatmanız, hızlı kullanıcı değiştirmeyi kullanmanız veya SSH kullanmanız yeterlidir:

cd "/ Sistem / Kütüphane / CoreServices / Menü Ekstraları / Kullanıcı.menu / İçindekiler / Kaynaklar /"
sudo ./CGSession -ususpend

Veya, muhtemelen giriş penceresini gösterecek belirli bir kullanıcıya geçmek için (bu aniden 10.5 Leopard'ımda çalışmıyor):

sudo ./CGSession -switchToUserID 501

Şimdi gösterilenler biraz Sistem Tercihlerine bağlıdır, ancak kullanıcıların simgelerinin ve adlarının olduğunu varsayalım. Bir adı etkinleştirmek için ilk harfleri yazmamız gerekir. Ardından, Return'den sonra şifre istemi gösterilir. Alternatif olarak herhangi bir isim seçilebilir (Aşağı Ok tuşuna basarak olduğu gibi) ve ardından herhangi bir kullanıcı adı ve şifresi istenecek Option-Return tuşuna basabilirsiniz . Hangi ekranın gösterildiğini nasıl anlayabileceğimi bilmiyorum, ama bunu daha sonra için saklayalım ...

Bu nedenle, ilk (rastgele) kullanıcı adını seçmek ve Option-Return tuşuna basın, belirli bir kullanıcı adı yazın, Return tuşuna basın ve parolayı yazın:

sudo osascript -e 'app "Sistem Olayları" söyle
  anahtar kodu 125
  aşağı seçeneğini kullanarak tuş vuruşu dönüşü
  tuş vuruşu "kullanıcı adı"
  gecikme 1.0
  tuş vuruşu dönüşü
  gecikme 1.0
  tuş vuruşu "şifre"
  gecikme 1.0
  tuş vuruşu dönüşü
son söyle '

Yukarıda söyleyebildiğim kadarıyla kullanımı sınırlamayan bazı hatalar gösterilmektedir:

osascript [285]: 3891612: (connectAndCheck) Güvenilmeyen uygulamalar değil 
    oturum açmadan önce Windows Server'a bağlanma veya Window Server'ı başlatma izni verildi.
_RegisterApplication (), ile varsayılan bağlantı kurulamadı
    WindowServer, _CGSDefaultConnection () işlevi NULL.

Alternatif olarak, " Giriş penceresini Apple Uzak Masaüstü ile Komut Dosyası Oluşturun " (dile bir günlük o sitedeki yorumlar daha iyi bir çözüm gösterecektir) içindeki dile özgü komut dosyasını kullanın :

"SecurityAgent" işlemini söyle
  pencere 1'in 1. grubunun metin alanı 1'in değerini "kullanıcı adı" olarak ayarla
  pencere 1'in 1. grubunun metin alanı 2 değerini "parola" olarak ayarlayın
son söyle
"SecurityAgent" başvuru işleminin 1. penceresinin "Oturum Aç" düğmesine tıklayın

Ancak asıl sorun şu: bunun hala şifreye ihtiyacı var . Ancak: kullanıcının boş bir parolası olduğunda açıkçası parola gerekmez. Aslında, boş parolalar için bir kullanıcının simgesine tıklamak yeterlidir. Bu nedenle, AppleScript kullanarak tuş vuruşları göndermek kabul edilebilirse, belki de "tüm" anlamaya kalır:

  • Bir kullanıcının parolasını geçici olarak boşaltmak, bu parolayı bilmeden oturumu başlatmaya (veya devam ettirmeye) izin vermek mümkün müdür?

  • AppleScript hata korumalı yapabilir mi? Sevmek:

    • Giriş penceresinin görünür olup olmadığını nasıl anlarım ? (belki stat -f%Su /dev/consoleyardımcı olabilir o verim olarakroot giriş penceresi görünürken)
    • Hangi giriş penceresinin gösterildiğini nasıl anlarım ? (Gibi: simgeler ve giriş adları gösteren biri veya bir açılır liste veya belki sadece bir kullanıcı belirli bir kullanıcıya geçmeyi seçtiyse bir şifre istemi?)
    • Gecikmelerden kurtulun.
    • Bu hata mesajı ne olacak?

Test etmek için (not: öyle görünüyor Paylaşım Ekranı kullanırken bu tercihi olarak bilgisayarları kontrol ederken: Şifrele şifreler ve sadece tuş vuruşlarını da giriş penceresi gösterildiğinde bağlantıyı korur veya kullanırken bir kullanıcı sonra başarıyla giriş yaptı. Şifrele tüm ağ verilerim varsa, her giriş görüntülendiğinde veya bir kullanıcı değiştirildiğinde, Mac'imin Ekran Paylaşımı bağlantısını yeniden kurması gerekir.)


Bu iyi bir başlangıç, ama iki problemi var. İlk olarak, giriş penceresindeyseniz işe yaramaz, ki istediğim buydu ve istemediğim bir şifre istiyor. Kök olduğundan, kullanıcıları parola olmadan değiştirebilmelidir.
Sophie Alpert

Aha. Bilgisayarda otururken başka bir kullanıcı olarak nasıl giriş yapacağımı bile bilmiyorum, bu yüzden puro yok sudo osascript -e 'tell app "System Events" to keystroke "password" & return'. Ekran kilitliyken, yönetici kullanıcı adı ve parolası girildiğinde diğer kullanıcının oturumu devam eder . Ancak herhangi bir kullanıcı için şifreyi bilmeden bir oturum nasıl başlatılır ? (Şifreyi biliyorsanız, başka bir geçici çözüm de giriş ekranı için de çalışan Ekran Paylaşımı olabilir. Belirli bir kullanıcı oturumu başlatıldıktan veya devam ettirildikten sonra Ekran Paylaşımı'nı yeniden bağlamanız gerekir.)
Arjan

Bu iyi. Ancak tuş vuruşlarını manuel olarak simüle etmeden bir çözümü tercih ederim.
Sophie Alpert

2
Acaba başka biri için nasıl bir seans başlatacağını biliyor mu? Yani, yukarıdaki yanıtı dikkate almadan, sadece Mac OS X'in günlük kullanımında: bir yönetici, kullanıcının şifresini bilmeden başka bir kullanıcı olarak oturum açabilir mi? (Tıpkı sukomuta istemi, ancak daha sonra bir GUI oturumu için Ya da sadece bir idari kullanıcı adı girme ve şifre nerede ekran, kilitli olduğunda gibi. Özgeçmiş diğer kullanıcının oturumunu.)
Arjan

Belki de AppleScript tuş vuruşu olmadan bunu yapmak mümkün değildir: docs.info.apple.com/article.html?path=RemoteDesktop/3.0/en/…
Sophie Alpert

1

Bunu son zamanlarda araştırıyorum.

Bunu uygulamanızın PAM yığınına ekleyin veya sshd ile test edin:

session    required       pam_launchd.so launchd_session_type=Aqua

Bu, kapalı kullanıcı oturumuna oldukça yakın bir grafik oturumu elde etmek için uzun bir yol kat ediyor. Özellikle, doğru bootstrap ad alanında ve doğru bootstrap bağlantı noktalarına sahip (sanırım). Kaynağı pam_launchd'ın ne yaptığını kontrol edebilirsiniz; bağlantı noktalarını ve ad alanını ayarlamak için Mach yordamlarını çağırmak için bazı makul görünümlü özel kitaplık (libvprop'ta vproc_priv.h işlevleri) kullanıyor. Apple'ın Mach'dan türetilmiş sistem çağrıları için sağladığı tüm (sınırlı) dokümanlarla eşleşir.

Ardından, denetim kullanıcı kimliğinizi BSM API'sine sahip kullanıcının kimliğine ayarlamanız gerekir, aksi takdirde loginwindow sizinle Lion'da konuşmaz.

Eğer "launchctl blist" i kontrol ederseniz ve bazı süreçler ve hizmetler güzel bir şekilde hayata geçirilirse (çalışma alanı gibi) oturum artık kapalı bir oturuma çok yakın görünüyor. Aslında, Finder ve loginwindow dışındaki her şey çalışıyor. Loginwindow çalışana kadar, grafik bir uygulama başlatamazsınız ve oturum başına oturum açma penceresi işlemi her zaman global uygulamanın doğrudan alt öğesi olarak ortaya çıkar. Yeni oturumda yeni bir oturum açma penceresi başlatmak için loginwindow işlemi nasıl dürtülür? Son parçayı yerleştirmenin bir yolunu bulamıyorum!

Bu cevabı tamamlayan yardımlar minnetle alındı.


0

komutu sudo ile çalıştırmak, komut dosyasını standart kullanıcılar tarafından okunamayacak şekilde ayarlamanızı sağlar. Mükemmel değil, ancak yönetici kullanıcınız zaten tehlikeye girmişse, oyun zaten bitti!

chmod ur komut dosyası adı

benim senaryom böyle görünüyor, bir kullanıcı zaten çalışırken, SSH (Snow Leopard 10.6.3 üzerinde test edilmiş) üzerinden ikinci bir kullanıcıya geçmek için uzaktan çalışır:

#!/bin/bash
#go to login window
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID 503

osascript -e 'tell app "System Events"
keystroke "password"
  delay 1.0
  keystroke return
end tell'

exit

0

Bir yazılım güncellemesi yapmak için aynı kullanıcıyı 25 farklı iş istasyonunda oturum açmam gerekiyordu. 'Osascript -e ...' komutunu SSH oturumlarından, sudo ayrıcalıklarına rağmen güvenilir bir şekilde çalıştıramadım. Ancak Apple Remote Desktop ile çalıştırabildim. ARD'niz varsa:

  1. makinelerini seç
  2. onları uyandır ve gerekirse diğer kullanıcılardan çıkış yap
  3. "Yönet" menüsünden "UNIX Komutu Gönder ..." seçeneğini belirleyin
  4. Arjan komut dosyasını ('sudo' sözcüğünü atlayarak) komut iletişim kutusuna yapıştırın
  5. "Komutu şu şekilde çalıştır: Kullanıcı: kök" seçeneğini seçin ve girin

Bir dakikadan daha kısa bir sürede Finder'ı kullanıcı olarak çalıştıran 25 Mac Minis'i bulmaktan çok memnun kaldım. Tekrarlamak gerekirse, ARD ile her makinede sudo şifresini girmek zorunda değilsiniz. Komut iletişim kutusuna yapıştırmanız gereken satırlar (geçerli bir kullanıcı adı ve parola yerine geçer):

osascript -e 'tell app "System Events"
  key code 125
  keystroke return using option down
  keystroke "the username"
  delay 1.0
  keystroke return
  delay 1.0
  keystroke "the password"
  delay 1.0
  keystroke return
end tell'
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.